创建一个空文件夹,在重命名文件的同时将文件移到新文件夹中,然后将其移回旧文件夹会更简单。这样,您就不会在重命名现有文件或迭代已重命名的文件时遇到任何可能的问题。
我的原始解决方案:
@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