找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 19346|回复: 4

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

[复制链接]
发表于 2022-12-24 12:03:55 | 显示全部楼层 |阅读模式
  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。研究了好久都失败了 求解!
数字也算英文里面,符号不用管。
发表于 2022-12-24 14:52:16 | 显示全部楼层
  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
复制代码
 楼主| 发表于 2022-12-24 16:28:36 | 显示全部楼层
本帖最后由 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会多出来一个结果。会把输入的字母显示出来。
发表于 2022-12-24 18:08:12 | 显示全部楼层
  1. echo !str:~%%a,1!
复制代码

这个输出的

加个 cls 清屏
 楼主| 发表于 2022-12-24 18:30:44 | 显示全部楼层
回复 4# 77七


    可以了,谢谢 我用>nul 2>nul藏起来了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 08:49 , Processed in 0.018068 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表