代码之家  ›  专栏  ›  技术社区  ›  Puntherline

批处理:重命名文件数字(每次计数)

  •  0
  • Puntherline  · 技术社区  · 7 年前

    提前感谢您的回答!

    1 回复  |  直到 7 年前
        1
  •  3
  •   DodgyCodeException    7 年前

    创建一个空文件夹,在重命名文件的同时将文件移到新文件夹中,然后将其移回旧文件夹会更简单。这样,您就不会在重命名现有文件或迭代已重命名的文件时遇到任何可能的问题。

    我的原始解决方案:

    @echo off
    setlocal enabledelayedexpansion
    set folder=C:\path\to\existing\folder
    md %folder%.TEMP
    set /a n = 0
    for %%f in ("%folder%\*") do (
        set /a n += 1
        move "%%f" "%newfolder%\!n!%%~xf"
    )
    move "%folder%.TEMP\*" "%folder%"
    rd %folder%.TEMP
    

    使用@Compo的注释进行更新,按照创建的时间顺序用前导零对文件进行编号(将/TC更改为/TW以使用上次修改日期):

    @echo off
    setlocal enabledelayedexpansion
    set folder=C:\path\to\existing\folder
    md %folder%.TEMP
    set /a n = 0
    for /f "delims=" %%f in ('dir/b/a-d-s-l/od/tc "%folder%"') do (
        set /a n += 1
        set zn=0000000!n!
        set zn=!zn:~-8!
        move "%%f" "%newfolder%\!zn!%%~xf"
    )
    move "%folder%.TEMP\*" "%folder%"
    rd %folder%.TEMP