![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-08-09 21:00 |
共 47,811 主题排行 / 349,897 发帖 / 今日 2 篇 / 48,255 会员排行 |
| DOS批处理 & 脚本技术(批处理室) » [已解决]如何判断输入的是中文还是英文? |
| 可打印版本 2,160 / 27 |
| 第16楼 tireless | 发表于 2008-09-21 07:44 |
| 银牌会员 发帖 1,122 积分 2,025 | |
Originally posted by HAT at 2008-9-20 05:30 AM: |
|
| 第17楼 metoo | 发表于 2008-09-21 08:13 |
| 初级用户 发帖 93 积分 195 | |
|
归根结底就是findstr的正则太肉
|
|
| 第18楼 moniuming | 发表于 2008-09-21 10:21 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
再试试这个如何?
改一下,支持特殊字符: [ Last edited by moniuming on 2008-9-21 at 10:27 AM ] |
|
| 第19楼 tireless | 发表于 2008-09-21 10:36 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
Re 18 楼 计算不正确。
床前明月光,疑是地上霜。举头望明月,低头思故乡。 的计算结果是 240。正确的应该是 456。 |
|
| 第20楼 moniuming | 发表于 2008-09-21 11:33 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
[ Last edited by moniuming on 2008-9-21 at 11:41 AM ] |
|
| 第21楼 HAT | 发表于 2008-09-21 11:34 |
| 版主 发帖 5,017 积分 9,023 | |
|
Re 16楼 15楼代码的运行结果:
C:\Test>test.bat 能把你的测试用例和测试结果贴出来看看吗? |
|
| 第22楼 tireless | 发表于 2008-09-21 11:44 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
额,15 楼的代码有用。计算太慢了,昨晚我以为批处理没有反应,没等结果出来就关掉了...
|
|
| 第23楼 moniuming | 发表于 2008-09-21 11:53 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
经多次测试,20楼的通过各种测试,而且效率还可以,试试?
[ Last edited by moniuming on 2008-9-21 at 11:55 AM ] |
|
| 第24楼 tireless | 发表于 2008-09-21 21:29 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
最后一次整合...
20 楼的代码完全不会出错。我想在原基础上再加上一些命令处理,可是我写的代码有点问题,所以再麻烦下各位,顺便整合在一起。 想在原基础上再进行这些处理: 1、还要显示输入的是什么 2、输入后,首先进行这些判断: 如果: 直接回车,则执行命令 输入的是 /h,则执行命令然后退出 输入的是 /s,则执行命令然后退出 输入的是 /r,则执行命令然后退出 再判断下面的: 是否以 /h 开头,如果是,则截取 /h 后面的字符,然后执行命令 是否以 /s 开头,如果是,则截取 /s 后面的字符,然后执行命令 以下是我修改后的代码: ■: 原 20 楼的代码 ■: 我加上的 @echo off setlocal enabledelayedexpansion :bgn del t_.txt 1>nul 2>nul set "n="&set "count=" set /p str=请输入: if not defined str goto 11 If %str%==/h 执行命令 & exit If %str%==/s 执行命令 & exit If %str%==/r 执行命令 & exit if /i "%str:~,2%"=="/h" ( set str=%str:~2% 执行命令 goto settext ) if /i "%str:~,2%"=="/s" ( set str=%str:~2% 执行命令 ) :settext set Text=%str% :agn set st=!str:~,1! >>t_.txt echo.!st! if not "!str:~1!"=="" (set "str=!str:~1!"&goto :agn) >>t_.txt echo god for /f "delims=:" %%a in ('findstr /o .* t_.txt') do ( set /a "n+=1","m=n-1" set "_!n!=%%a" if !n! geq 2 ( call set /a "var=%%_!n!%%-%%_!m!%%" if !var! equ 4 (set /a count+=19) else (set /a count+=10) ) ) echo %count% echo %text% goto :bgn :11 ... 测试结果是,有空格就会出错。 (错误不出在别处,就在我添加的那段里运行中断了) [ Last edited by tireless on 2008-9-21 at 01:53 AM ] |
|
| 第25楼 zqz0012005 | 发表于 2008-09-21 22:07 |
| 中级用户 发帖 135 积分 297 | |
If %str%==/h 执行命令 & exit 怎么后面知道加引号,前面为何不加 |
|
| 第26楼 tireless | 发表于 2008-09-22 09:11 |
| 银牌会员 发帖 1,122 积分 2,025 | |
怎么后面知道加引号,前面为何不加 加上引号后,输入空格没有问题了。却还有另外的问题: 请输入:(*^__^*) 嘻嘻…… 是什么原因? 用以下代码做测试: [ Last edited by tireless on 2008-9-21 at 02:52 PM ] |
|
| 第27楼 moniuming | 发表于 2008-09-22 11:45 |
| 银牌会员 发帖 574 积分 1,335 来自 广西 | |
|
试试?
[ Last edited by moniuming on 2008-9-22 at 12:03 PM ] |
|
| 第28楼 tireless | 发表于 2008-09-22 12:18 |
| 银牌会员 发帖 1,122 积分 2,025 | |
|
re 27 楼 没问题了。
谢谢大家耐心的帮助。 |
|
| 上一页 1 2 |
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |