我有几个目录,分别命名为“A”、“B”、“C”等。每个都有一些文件。我喜欢使用目录名加上每个目录中从 1 开始的索引号来重命名每个目录中的文件,左零填充到 3 的宽度。例如:子目录 A 有 3 个文件,它们将被重命名为:
A_001.dat
A_002.dat
A_003.dat
子目录 B 有 2 个文件,应重命名为:
B_001.dat
B_002.dat
等等。这些文件将被移动到主目录。我有以下批处理文件,但我似乎无法增加数字。请帮忙。
@echo off
set HomeFolder=%CD%
set OldExt=TXT
set NewExt=DAT
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('dir *.%OldExt% /b /s') do (
set i=1
for /f "delims=" %%b in ("%%~dpa\.") do (
set pad=00!i!
set str=!pad:~-3!
echo move /b "%%a" "%HomeFolder%\%%~nxb_!str!.%NewExt%"
set /A i=!i!+1
)
)
endlocal
pause
而正确的答案是:
@echo off
set HomeFolder=%CD%
set OldExt=TXT
set NewExt=TIF
set i=1
set Folder=
set LastFolder=
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%a in ('dir *.%OldExt% /b /s') do (
for /f "delims=" %%b in ("%%~dpa\.") do (
set Folder=%%~nxb
if NOT !Folder!==!LastFolder! (set /A i=1)
set LastFolder=!Folder!
set pad=00!i!
set str=!pad:~-3!
copy /b "%%a" "%HomeFolder%\%%~nxb_!str!.%NewExt%"
Set /A i+=1
)
)
endlocal