批量增量值

时间:2014-07-17 17:11:02

标签: batch-file

我尝试从文件中读取值并递增它。但如果我增加一个大于8的值,则结果为1.这是我的代码:

for /f "delims=" %%i in (VERSION.txt) do set ver=%%i
set /a ver+=1
echo 0%ver%>>VERSION.txt
echo Build: %ver%

我的文件如下:

06
07
08
01
02
03

有人可以解释什么是错的吗?

3 个答案:

答案 0 :(得分:2)

你必须在没有0的情况下保存你的价值:

测试:

set /a toto=08+1

对于解释器,这不是十进制,十六进制或八进制有效值。

你最好做这样的事情:

@echo off
for /f "delims=" %%i in (VERSION.txt) do set ver=%%i
set /a ver+=1
echo %ver%>VERSION.txt
echo Build: 0%ver%

编辑:

你可以这样做:

@echo off
for /f "delims=" %%i in (VERSION.txt) do set "ver=%%i"
if  "%ver:~0,1%"=="0" set "ver=%ver:~1%"
set /a ver+=1
echo 0%ver%>>VERSION.txt
echo Build: 0%ver%

答案 1 :(得分:1)

具有前导零的数字被解释为八进制数。 08不是有效的八进制数。

答案 2 :(得分:0)

正如乔伊所说,任何带有前导零的数字都被解释为八进制。 但是你可以通过在它前面添加一个并在之后剥离它来进行计算:

...
set /a ver=1%%i+1
echo %ver:~1%
...

使用echo on运行它,看看会发生什么。