windows - 通过批处理文件增加带有前导零的数字

标签 windows batch-file cmd

在前面加零的数字递增时遇到麻烦。

在 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/

相关文章:

command-line - 具有旧值的 Windows 批处理回显变量

windows - 奇怪的错误,我无法在 Windows 上构建 OCaml 程序

c# - 在 while 循环期间文件正在被另一个进程使用 (C#)

javascript - 下载速度下降时在 Windows 中终止进程

batch-file - 如何从批处理文件中同时打开两个记事本文件?

在windows上编译运行flex程序

windows-xp - windows下使用SAS和mkdir创建目录结构

java - 您在 Izpack 安装的RegistrySpec.xml 中添加了什么来设置 Publisher 字段

windows - 为什么 Hudson 不将 xcopy 识别为命令?

batch-file - 等待输入 BATCH