我尝试从文件中读取值并递增它。但如果我增加一个大于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
有人可以解释什么是错的吗?
答案 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
运行它,看看会发生什么。