无效号码。数字常量为十进制(17),十六进制(0x11)或八进制(021)

时间:2012-03-18 22:13:30

标签: batch-file

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

如何解决此错误?

2 个答案:

答案 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