【问题标题】:Change file names with .bat使用 .bat 更改文件名
【发布时间】:2019-05-09 18:01:22
【问题描述】:

大家好,我是批处理新手,有一个问题要我的 .bat 重命名文件。

我查看了以下解决方案并尝试将其转移到我的问题上: Renaming file names with a BAT file

所以我的 .bat 看起来像这样:

setlocal enabledelayedexpansion
set /a count=1
set padded_count=000!count!
for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
    ren "%%a" !padded_count!.txt
    set /a count+=1
)

我有一个随机名称的 .txt 数据文件。 例如

abc.txt
def.txt
123.txt
456.txt

我想把这些改成:

0001.txt
0002.txt
...

但是当我使用我的 .bat 时,它只是第一个更改名称的 .txt。 你能解释一下为什么吗?我应该怎么做才能获得所有这些。

或者是否可以在 cmd 中使用“ren *.txt ___”之类的 REN 来处理这个问题

【问题讨论】:

    标签: batch-file cmd


    【解决方案1】:
    setlocal enabledelayedexpansion
    set /a count=10001
    for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
        ren "%%a" !count:-4!.txt
        set /a count+=1
    )
    

    其中!count:-4! 选择count 的最后4 个字符。

    【讨论】:

      【解决方案2】:

      在您对要求发表评论后,这类似于@Magoo 的回答,但我不将其限制为 4 个字符。

      @echo off
      setlocal enabledelayedexpansion
      set count=10000
      for /f "tokens=*" %%a in ('dir /b /od *.txt') do (
          if "!count:~1!" == "9999" set count=100000
          set /a count+=1
          echo ren "%%a" !count:~1!.txt
      )
      

      在这种情况下,一旦我们达到 9999,我们就会设置一个新的 count 变量,因此输出文件将继续添加一个数字。

      ren "file9999.txt" 9999.txt
      ren "file10000.txt" 00001.txt
      ren "file10001.txt" 00002.txt
      ...
      

      【讨论】:

      • 嗨格哈德,现在我明白了。它工作正常,非常感谢您的详细回答。
      • 我发现该解决方案存在问题,也许我并不清楚。当我有 >10 个 .txt 数据集时,我期望 0010 而不是 00010(目前是这种情况)。也许我应该将它与 Magoo 的解决方案结合起来。
      猜你喜欢
      • 1970-01-01
      • 2021-06-01
      • 2021-10-19
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2012-06-20
      • 2013-11-06
      相关资源
      最近更新 更多