Board logo

标题: [文件操作] [已解决]批处理如何检测输入的中英文字符串? [打印本页]

作者: jorlaying    时间: 2022-12-24 12:03     标题: [已解决]批处理如何检测输入的中英文字符串?

  1. @echo off
  2. set /p str=请输入:
  3. for /f "delims=" %%i in ('echo %str%^|findstr "[a-zA-Z0-9]"') do set var=%%i
  4. if defined var (
  5.   echo 这是英文
  6.   set t=EN
  7. ) else (
  8. echo 这是中文
  9. set t=CN
  10. )
  11. PAUSE
复制代码
我想加一个如果输入中英文混合的,ECHO 这是中英文 set t=EC。研究了好久都失败了 求解!
数字也算英文里面,符号不用管。
作者: 77七    时间: 2022-12-24 14:52

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p str=请输入:
  4. for /l %%a in (0,1,10) do (
  5.     if not "!str:~%%a,1!"=="" (
  6.         echo !str:~%%a,1!|findstr "[a-zA-Z0-9]" && set /a "n=n+1" || set /a "m=m+1"
  7.     )
  8. )
  9. if defined n set t=EN
  10. if defined m set t=CN
  11. if defined n if defined m set t=EC
  12. cls
  13. if not defined n set n=0
  14. if not defined m set m=0
  15. echo 英文  数量 :!n!
  16. echo 中文  数量 :!m!
  17. echo %t%
  18. endlocal
  19. pause
复制代码

作者: jorlaying    时间: 2022-12-24 16:28

本帖最后由 jorlaying 于 2022-12-24 16:30 编辑

回复 2# 77七
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set /p str=请输入:
  4. for /l %%a in (0,1,10) do (
  5.     if not "!str:~%%a,1!"=="" (
  6.         echo !str:~%%a,1!|findstr "[a-zA-Z0-9]" && set /a "n=n+1" || set /a "m=m+1"
  7.     )
  8. )
  9. if defined n set t=EN
  10. if defined m set t=CN
  11. if defined n if defined m set t=EC
  12. echo %t%
  13. endlocal
  14. pause
复制代码
厉害啊七哥!但是数量不需要,只需要输出EN CN EC就好了,改了一下你的代码,但是不知为何EN和EC会多出来一个结果。会把输入的字母显示出来。
作者: 77七    时间: 2022-12-24 18:08

  1. echo !str:~%%a,1!
复制代码

这个输出的

加个 cls 清屏
作者: jorlaying    时间: 2022-12-24 18:30

回复 4# 77七


    可以了,谢谢 我用>nul 2>nul藏起来了




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2