我希望执行一个批处理文件,并让它自己调用10次。
set /a iteration=0%1+1
IF %iteration% EQU 10 exit
rem Taskkill /IM aspnet_compiler.exe /F
timeout 1
call KillBILLd.bat %iteration%
然而,在出错之前,它只会到达数字8
Invalid number. Numeric constants are either decimal (17), hexadecimal (0x11),
or octal (021).
在线
set /a iteration=0%1+1
如何修复此错误?
表达式中有0%1
-如果参数为8,则扩展为08
,这不是有效的八进制数(8不是八进制数字),因此会出现错误。我不是批处理文件专家,但我想你想去掉领先的0
:
set /a iteration=%1+1
下面是一些SET命令文档的链接。
正如卡尔所说,前导零是八进制数的符号
有时前导零似乎很有用,因为在%1
为空的情况下可以避免错误。
但后来你会遇到这种类型的问题,可以通过使用其他方法来解决。
准备一个1
或更好的100
,然后构建模也适用于数字8和9(以及空输入)。
set /a iteration=1000%1 %% 100 + 1
但在您的情况下,删除零应该足够了,即使%1
为空,您也得到了一个有效的表达式。
set /a iteration=%1 + 1
将扩展到set /a iteration= + 1