我需要检查传递给Windows批处理文件的参数是否为数字值。对于变量来说,检查也能起作用,这将是一件很好的事情。
我发现了一个
答案
到类似的
问题
,其中
命令与正则表达式一起使用。
我确实尝试了这个解决方案,但它并不像我希望的那样工作(至少在Windows 7上是这样)。
我的测试场景如下:
AA # not a valid number
A1 # not a valid number
1A # not a valid number
11 # a valid number
发布于 2013-07-11 11:53:34
SET "var="&for /f "delims=0123456789" %%i in ("%1") do set var=%%i
if defined var (echo %1 NOT numeric) else (echo %1 numeric)
替换
使用
视情况而定
发布于 2013-07-11 13:03:03
对于
(
测试前导零
):
echo(%~1|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul&&echo numeric||echo not numeric
发布于 2013-07-11 11:05:53
你可以试试这个。例如,传递的变量是
和
等于
..。
set /a varCheck=%var%
if %varCheck% == %var% (goto :confirmed) else (exit /B)
exit /B
:confirmed
:: You can use %var% here, and it should only be executed if it is numerical!
如果
等于例如
,那么它将设置
要成为
,而且因为
不等于
,则退出批处理。
(第3行上的出口是为了防止if语句出于某种原因决定不执行...XD。)
https://stackoverflow.com/questions/17584282
复制相似问题