用cmd和批处理中的数字序列重命名多个文件

Posted

技术标签:

【中文标题】用cmd和批处理中的数字序列重命名多个文件【英文标题】:Rename multiple files with a sequence of numbers in cmd and batch 【发布时间】:2021-01-04 13:59:11 【问题描述】:

这是我在这个美丽的网站上的第一个问题。 正如您可能在标题中读到的那样,我想重命名可变数量的文件,在 cmd 和批处理文件中使用一系列数字,序列正在增加,就像这样(1、2、3、4、5, 6、7、8、9、10……)。 例如:

Test.txt 应该变成 1.txt

Another.txt 应该变成 2.txt

等等,都是自动的。

我的想法是设置一个像set /a number=1 这样的变量并通过循环向它添加像这样的set number="%number%+1" +1 并每次重命名,但是自从我用ren 重命名文件以来这是不可能的 命令它一次重命名。

谁能帮我提供一个 cmd 和一个批处理文件版本?

提前致谢

【问题讨论】:

您确实没有提供代码的minimal reproducible example。也请接受tour 并阅读How to Ask 一个问题。 欢迎来到 SO,AleP _C.P.没有代码的问题应该去superuser.com 如果您使用循环机制,为了您的递增,您必须已经知道循环会一次迭代一个文件,而不是“一次全部”。您需要查看的是for-loop,仅在 [batch-file] 标签下就有数以万计的示例!请使用搜索工具并在editing your question 之前修改一些代码以使其成为主题。 我猜你用的是ren *.* %number%.*,对吧? 很抱歉没有提供所有这些重要信息,谢谢大家,这是我的第一个问题,我从来没有在这个网站上写过任何东西。我会仔细阅读所有文档。 【参考方案1】:

这应该适合你。

set /a Index=1

setlocal enabledelayedexpansion

for /r %%i in (*.txt) do ( 
    rename "%%i" "!Index!.txt"
    set /a Index+=1
)

使用上述代码创建一个批处理文件并在您的 .txt 文件可用的文件夹中运行它。

如果您想附加“0”使其成为 2 位数字。您可以尝试添加 if else 语句,如下所示。

set /a Index=1

setlocal enabledelayedexpansion

for /r %%i in (*.txt) do ( 
    rem if number is less than 10, append 9 to file name
    if !Index! lss 10 (
        rename "%%i" 0"!Index!.txt"
    ) else (
        rename "%%i" "!Index!.txt"
    )
    
    set /a Index+=1
)

【讨论】:

这里,输出为 1,2,3,4,5,6,7,8,9,10,11,12....' 可以是 01,02,03, 04,05... 2 位数?' @foodiepanda 不幸的是,我有一段时间没有在这里活动了。不确定您是否仍想将其设为 2 位数字。如果您仍然需要它,我已经更新了我的答案。谢谢! 感谢更新答案,我现在不需要,但未来的访客可以'

以上是关于用cmd和批处理中的数字序列重命名多个文件的主要内容,如果未能解决你的问题,请参考以下文章

重命名cmd中的多个文件

用bat文件重命名一个文件的命令怎么写?

重命名档案中的多个文件

急!用bat制作批处理文件,复制一个文件到多个以日期命名文件夹下并以“文件夹名+文件本名”的形式重命名

使用 Windows 批处理脚本重命名目录中的所有文件

使用 Windows 批处理脚本重命名目录中的所有文件