回复 4# yyykkkyyyy
其实如果是纯数字的话,用 set /a 来判断更绿色无污染,不过会自动将用户输入的八进制、十六进制数转为十进制。非必要情况尽量避免使用外部命令,对代码效率和容错性的提升是有可观效果的。- set /a "test/=!!(var/4)+!(var/1)" 2>nul&&echo 错误||echo 正确
复制代码 或者用 for 亦可:- setlocal enabledelayedexpansion
- for /f "delims=123" %%a in ("!var!") do set error=1
- if defined error (echo 错误) else echo 正确
复制代码 如果输入的不是单个字符,那也有简化的办法,不过不兼容含双引号和感叹号的 %var%- set str="123"abc"QWE"@#$"
- setlocal enabledelayedexpansion
- if "!str:"%var:"=%"=!"=="!str!" set error=0
复制代码 当然也可以用笨办法...- setlocal enabledelayedexpansion
- for %%a in (123 abc QWE @#$) do if %%a==!var! echo 正确&set error=1
- if not defined error echo 错误
复制代码
|