无效号码.数字常量可以是十进制(17)、十六进制(0x11)或八进制(021)



我希望执行一个批处理文件,并让它自己调用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

最新更新