【问题标题】:Windows Batch counter with follow '0' [duplicate]跟随'0'的Windows批处理计数器[重复]
【发布时间】:2014-04-14 11:48:08
【问题描述】:

您好,我正在处理一个小批处理文件,该文件将我的重命名文件放在一个目录中,到目前为止循环正在运行,但我想在我的计数器结果前面创建一个 0,如下所示:

setlocal ENABLEDELAYEDEXPANSION

SET /A counter=0 
for %%A IN (*.txt) DO (
    SET /A counter+=1 
    copy "%%A" "directory/%%A.!counter!.txt"
    )

这完美输出为:

tvscriptmonday.txt => TVscriptmonday.1.txt tvscripttuesday.txt => TVscripttuesday.2.txt

但我想作为输出:

 TVscriptmonday.01.txt
    TVscripttuesday.02.txt

我尝试使用IF 命令:

if !counter! <9 set counter=0!counter!

但不知何故我无法让它工作,有什么想法吗?

【问题讨论】:

  • 总之,使用if !counter! lss 9 set counter=0!counter!

标签: windows loops batch-file counter


【解决方案1】:

使用一个小技巧:

setlocal ENABLEDELAYEDEXPANSION

SET /A counter=100 
for %%A IN (*.txt) DO (
    SET /A counter+=1 
    copy "%%A" "directory/%%A.!counter:~-2!.txt"
)

:~-2 仅从计数器中获取最后两个字符。

可扩展:例如,如果您需要一个四位数的方案,则从 10000 开始计数,并使用:~-4 提取最后四个字符

【讨论】:

  • 嗯,如果计数器值为1,最后两个字符有什么帮助?此外,链接的副本已经提供了答案。
  • @eis Stephan 的帖子为您提供了最后两位数。这是一个很好的解决方案。
  • 感谢作品 :-) 巧妙的把戏
  • @eis:计数器的值永远不会是1,因为它以100而不是0开始计数,如果你从101取最后两位数,它是@987654329 @ - 1 带有前导 0,根据问题的需要。无需检查,计数器是否小于10
猜你喜欢
  • 2011-05-18
  • 1970-01-01
  • 2017-06-27
  • 1970-01-01
  • 2021-10-27
  • 1970-01-01
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多