[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]批处理如何检测输入的中英文字符串?

  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。研究了好久都失败了 求解!
数字也算英文里面,符号不用管。

  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
复制代码
bat小白,请多指教!谢谢!

TOP

本帖最后由 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会多出来一个结果。会把输入的字母显示出来。

TOP

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

这个输出的

加个 cls 清屏
bat小白,请多指教!谢谢!

TOP

回复 4# 77七


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

TOP

返回列表