「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