批量:重命名文件数字(每次都加)

Batch: Renaming files numeric (Count up every time)

我希望我没有用这个标题混淆任何人,我不能用简短的语言很好地描述我的问题...我有一个包含多个文件的文件夹(所有文件都具有相同的扩展名),我想要重命名所有这些数字。这应该很容易,因为批处理文件每次替换名称时都必须进行计数。但我可能是错的。

除了一些基础知识,我对批处理知之甚少,但我总是很乐意了解更多。

提前感谢您的回答!

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

我原来的解决方案:

@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