用batch file增加前导零的数字

用前面的零来增加数字的麻烦。

它在0008告诉我filename already exist or file not found失败。 很奇怪。

这是脚本:

@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

从而简化了这个问题:

如何使用Windows批处理命令删除“没有扩展名的文件”的所有内容

如果不成功则暂停命令而不是自动closures

Windows批处理脚本使用7ziprecursion提取特定文件

循环浏览子目录中的文件夹并合并文本文件

Windows批处理脚本url解码

@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

如何忽略一个URL中的&符号来replace批处理脚本中的string?

将唯一文件批量复制到新文件

批处理游戏中的碰撞检测无法正常工作

杀死在后台运行的批处理

使用批处理脚本进行stringparsing

另一种方法添加一个前面的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

我找到的解决方案是在增加删除前面的零 。

喜欢:

set "num=008" echo num: %num% for /f "tokens=* delims=0" %%a in ("%num%") do set num=%%a set /a num+=1 echo num: %num%

这是因为具有前导零的数字被解释为八进制数字。 8和9不是有效的八进制数字。

对于set /A和对于数字比较(类型set /?和if /? ),这是正确的。

有几种方法可以像十进制值一样正确处理这些数字:

要进行数字操作,您需要删除前面的另一个答案中所述的前导零。

或者,你可以在某些操作前添加1 ; 比如, if 1%A% gtr 1%B% %A%和%B%包含相同的位数,则比较if 1%A% gtr 1%B% 。

一个选择是增加一个很大的数字加上增量值,稍后减去大数字; 例如,你有var=007增量,所以做set /A var+=(100+1) ,然后做set /A var-=100 ,得到var+1 ( 8 )。 (注意,大数字100必须至少包括与要增加的数值一样多的数字。)

最后,你可以使用模运算符; 例如,你想增加var=007 ,你可以set var=1%var%来获得1007 ,然后set /A var=(var+1)%%1000来增加删除1 ,这样就可以得到8 。

注意:以0x的数字是十六进制数字。

相关文章

本篇内容主要讲解“gitee如何上传代码”,感兴趣的朋友不妨来...
这篇“从gitee上下的代码如何用”文章的知识点大部分人都不太...
这篇文章主要介绍“gitee如何下载仓库里的项目”,在日常操作...
本篇内容主要讲解“怎么在Gitee上更新代码”,感兴趣的朋友不...
本文小编为大家详细介绍“怎么将工程托管到gitee”,内容详细...
这篇文章主要介绍了gitee中图片大小如何调整的相关知识,内容...