我希望执行一个批处理文件并让它自己调用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%
但是,在使用
发生错误之前,它只会达到数字8Invalid number. Numeric constants are either decimal (17), hexadecimal (0x11),
or octal (021).
在线
set /a iteration=0%1+1
如何解决此错误?
答案 0 :(得分:6)
你在那个表达式中有0%1
- 如果你的参数是8,那么扩展为08
,这不是一个有效的八进制数(8不是八进制数),所以你得到那个错误。我不是批处理文件专家,但我想你想放弃领先的0
:
set /a iteration=%1+1
这是指向某些SET command documentation的链接。
答案 1 :(得分:4)
正如卡尔所说,领先的零是八进制数的符号
有时候一个前导零似乎是有用的,因为如果%1
为空,你可以避免错误。
但是你遇到了这类问题,可以通过其他方式解决。
预先设置1
或更好100
,然后构建模数也可以使用数字8和9(以及空输入)。
set /a iteration=1000%1 %% 100 + 1
但是在你的情况下删除零应该就足够了,即使%1
为空你也有一个有效的表达式。
set /a iteration=%1 + 1
会扩展为set /a iteration= + 1