昨天花了点时间整理下,做了个 批处理字符计算,里面附了关于这方面的知识,方便以后的新手查看使用
可以分析出多少个:
* 中文字
* 英文字
* 数字(全角+半角)
* 空格与符号(全角+半角)
代码: | @echo off | | setlocal enabledelayedexpansion | | title 批处理 字符计算 最终版 [Raymai97作品] | | color 0f | | mode con cols=80 lines=25 | | :menu | | set sel=&cls | | echo, | | echo, // 批处理 字符计算 最终版【支持英文、中文、数字、符号】 by Raymai97 // | | echo, | | echo, 请选择: | | echo, | | echo, 1 小麦(raymai97)在这方面研究所得的珍藏知识 | | echo, | | echo, 2 使用 批处理字符计算器 【小麦原创】 | | echo, | | echo, 3 批处理论坛 bbs.bathome.net | | echo, | | echo, Q 退出 | | echo, | | set /p sel=^> | | if "!sel!"=="1" goto maidata | | if "!sel!"=="2" goto textcalc | | if "!sel!"=="3" start "" "http://bbs.bathome.net/" | | if "!sel!"=="Q" exit | | goto menu | | :maidata | | set sel=&cls | | echo, | | echo, // 妙用if,区别并计算字符 // | | echo, | | echo, set a=(某一个字符) | | echo, | | echo, 当 %%a%% lss "a" 就是 全角 或 半角 的 符号、空格 或 数字 else 就是 英文字 | | echo, | | echo, 当 %%a%% gtr "Z" 就是 中文字 | | echo, | | echo, 当 %%a%% lss "0" 就是 全角 或 半角 的 符号、空格 else 就是 全角 或 半角 的 数字 | | echo, | | echo, 以上为批处理检测的思路,可能有点复杂,简单点的分析: | | echo, | | echo, a-Z = 英文字 // 注意 // | | echo, | | echo, 多过 Z = 中文字 / 批处理必须一个一个分析 / | | echo, | | echo, 0-9 = 全角 或 半角 的数字 | | echo, | | echo, 少过 0 = 全角 或 半角 的符号、空格 | | echo, -------------------------------------------------------------------------- | | echo, 1 如果要区别 全角 和 半角 的符号、数字 和 空格 2 返回主菜单 | | echo, | | set /p sel=^> | | if "!sel!"=="1" goto maidata2 | | if "!sel!"=="2" goto menu | | goto maidata | | :maidata2 | | set sel=&cls | | echo, | | echo, // 如果要区别 全角 和 半角 的符号、数字 和 空格 // | | echo, | | echo, 请看看这段东西: | | echo, | | echo, if "1" gtr "1" (echo yes) else (echo no) | | echo, yes | | echo, if "1" gtr "2" (echo yes) else (echo no) | | echo, no | | echo, if "," gtr "2" (echo yes) else (echo no) | | echo, no | | echo, | | echo, 这段东西是我在cmd里测试得到的东西(已echo off),从上面可以看出: | | echo, | | echo, 全角的1大过 半角的 1 但 小过 半角的 2 | | echo, | | echo, 全角的,大过 半角的 , 但 小过 半角的 2 | | echo, | | echo, 看到这里,不用我多说,你也大概能猜出要如何区别,并感到失望 | | echo, | | echo, -------------------------------------------------------------------------- | | echo, 1 返回主菜单 | | echo, | | set /p sel=^> | | if "!sel!"=="1" goto menu | | goto maidata2 | | :textcalc | | cls | | set text= | | set /a len=0,sym=0,en=0,ch=0,num=0 | | echo, // 批处理字符计算器 12月12日完成 by Raymai97 // | | echo, | | set /p text=请输入: | | echo, | | echo, // 计算中 // | | if "!text!"=="" goto result | | :loop | | if "!text:~%len%!"=="" goto result | | if "!text:~%len%,1!" gtr "Z" (set /a ch+=1) else ( | | if "!text:~%len%,1!" geq "a" (set /a en+=1) else ( | | if "!text:~%len%,1!" lss "0" (set /a sym+=1) else ( | | set /a num+=1))) | | set /a len+=1 | | goto loop | | :result | | echo, | | echo, // 结果 // | | echo, | | echo, 全角/半角英文字:!en! 中文字:!ch! | | echo, | | echo, 全角/半角数字: !num! 全角/半角符号或空格:!sym! | | echo, | | echo, 总计:!len! | | echo, | | echo, // 任意键继续 // | | pause>nul | | goto textcalcCOPY |
|