在前面加零的数字递增时遇到麻烦。
在 0008 告诉我 文件名已存在或找不到文件
后失败。
很奇怪。
这是脚本:
@echo off
copy nul %tmp%\filename.tmp
for /f "tokens=2 delims=-." %%a in (
'dir /b "%tmp%\filename*.tmp" ^|sort /r ^|findstr /r [0-9]'
) do (
set "num=%%a"
goto :done
)
ren %tmp%\filename.tmp filename-0001.tmp
exit /b 0
:done
echo the highest number found is %num%
set /a num+=1
set incr=0000%num%
ren %tmp%\filename.tmp filename-%incr:~-4%.tmp
dir /b "%tmp%\filename*.tmp" |sort /r
从而简化问题:
@echo off
set "num=008"
echo num: %num%
set /a num=num+1
echo num: %num%
echo let's try another syntax
set "num=008"
echo num: %num%
set /a num+=1
echo num: %num%
输出:
num: 008
num: 1
let's try another syntax
num: 008
num: 1
最佳答案
另一种方法是在前面添加 1(这样它就不会被解释为八进制),然后递增,然后减去 1。
最大数量受CMD的set/a命令限制。
@echo off
set "num=008"
echo num: %num%
set "num=1%num%"
echo num: %num%
set /a num=num+1
echo num: %num%
set num=%num:~1%
echo num: %num%
pause
关于windows - 通过批处理文件增加带有前导零的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32874959/