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

时间:2017-09-19 11:11:31

标签: batch-file numeric counting

我希望我没有把任何人与这个头衔混淆,我不能在短线上很好地描述我的问题......我有一个包含多个文件的文件夹(所有文件都有相同的扩展名)和我想重命名所有这些数字。它应该很容易,因为每次替换名称时批处理文件都必须计数。但我可能是错的。

除了一些基础知识之外我不太了解批次,但我总是乐于了解更多。

提前感谢您的回答!

1 个答案:

答案 0 :(得分:2)

创建一个空文件夹,在重命名文件时将文件移动到新文件夹,然后将它们移回旧文件夹会更简单。这样,重命名现有文件或迭代已经重命名的文件就不会有任何问题。

我原来的解决方案:

@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