用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和批处理中的数字序列重命名多个文件的主要内容,如果未能解决你的问题,请参考以下文章