【问题标题】:DOS Batch to rename and rotate folders nameDOS批处理重命名和旋转文件夹名称
【发布时间】:2012-11-06 21:48:24
【问题描述】:

我想用 DOS 批处理脚本重命名和旋转文件夹名称。

例子:

我有这个:

C:\Main\Folder01
C:\Main\Folder02
C:\Main\Folder03
C:\Main\Folder04
C:\Main\Folder05

我需要将 Folder01 重命名为列表中的最后一个,在示例中它将成为 Folder06。但它可能是 Folder50,具体取决于文件夹的数量。所以我想得到这个。

C:\Main\Folder02
C:\Main\Folder03
C:\Main\Folder04
C:\Main\Folder05
C:\Main\Folder06

然后我需要将所有文件夹重新索引到01 02 03 04 05,这样Folder02就会变成Folder01,这样就可以轮换所有文件夹了。

我不知道如何批量处理,请指教。

【问题讨论】:

    标签: batch-file dos rename directory


    【解决方案1】:

    我会以不同的方式处理这个问题。首先将所有数字(包括01)减一会更容易:

                      ┌─────> C:\Main\Folder00
    C:\Main\Folder01 ─┘┌────> C:\Main\Folder01
    C:\Main\Folder02 ──┘┌───> C:\Main\Folder02
    C:\Main\Folder03 ───┘┌──> C:\Main\Folder03
    C:\Main\Folder04 ────┘┌─> C:\Main\Folder04
    C:\Main\Folder05 ─────┘
    

    然后将 00 文件夹重命名为以前的姓氏:

    C:\Main\Folder00 ──┐
    C:\Main\Folder01   │   C:\Main\Folder01
    C:\Main\Folder02   │   C:\Main\Folder02
    C:\Main\Folder03   │   C:\Main\Folder03
    C:\Main\Folder04   │   C:\Main\Folder04
                       └─> C:\Main\Folder05
    

    这种方式似乎更容易,因为重命名文件夹的循环还将最后处理的名称存储在一个变量中,然后该变量将用于重命名 00 文件夹。这是我正在谈论的内容的实现:

    @ECHO OFF
    SET "pathtemplate=C:\Main\Folder"
    FOR /D %%I IN ("%pathtemplate%??") DO (
      SET "oldname=%%~nxI"
      SETLOCAL EnableDelayedExpansion
      SET /A "newsuffix=1!oldname:~-2!-1"
      RENAME "%%I" "!oldname:~0,-2!!newsuffix:~1!"
      ENDLOCAL
    )
    RENAME "%pathtemplate%00" "%oldname%"
    

    oldname 变量用于记住循环后最后处理的文件夹。它也用于循环中:首先,用于提取数字,其次,用于为新名称提供基础。

    【讨论】:

    • 太棒了!它确实完美!即使你以不同的方式做到这一点,它也完全符合我的意思......太棒了!谢谢你..
    • @dbenham:谢谢!现在有图片! :)
    猜你喜欢
    • 1970-01-01
    • 2016-09-11
    • 2014-02-02
    • 2022-08-10
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2011-12-26
    • 2021-04-07
    相关资源
    最近更新 更多