次のスクリプトをまとめました。
@echo off
setlocal
rem The number of the current file, gets incremented
set FileNumber=1
rem Move into "component" directory, the following "for" command will
pushd %~dp0\component
rem loop over directories there
for /d %%f in (*) do call :process "%%f"
rem move into the previous directory again
popd
endlocal
goto :eof
:process
rem process files
for /f %%x in ('dir /b /a:-d %1 2^>nul') do call :process_files %~1 %%x
rem go down recursively, if there are more subdirectories
for /f %%d in ('dir /b /a:+d %1 2^>nul') do call :process %%d
goto :eof
:process_files
call :leadingzeros %FileNumber%
rem Output line
echo File%RESULT%=%~1\%2
set /a FileNumber+=1
goto :eof
rem Parameter: a non-negative number <= 9999
rem Result: a string with zero padding at the start
:leadingzeros
if %1 LSS 10 set RESULT=000%1&goto :eof
if %1 LSS 100 set RESULT=00%1&goto :eof
if %1 LSS 1000 set RESULT=0%1&goto :eof
set RESULT=%1
goto :eof
必要なものではないかもしれませんが、出発点を提供する必要があります。ただし、出力は同じです。次のファイル/ディレクトリ ツリーの場合:
パッケージ
│files.cmd
│
└───コンポーネント
├───lib
│ LIcons.res
│TstandardBtn_16.RES
│TstandardBtn_24.RES
│
└───出典
AWindowSplash.pas
AWindowT.pas
ImageLister.pas
内部T.pas
WindowT.pas
バッチを実行すると、次の出力が生成されます。
File0001=lib\LIcons.res
File0002=lib\TstandardBtn_16.RES
File0003=lib\TstandardBtn_24.RES
File0004=source\AWindowSplash.pas
File0005=source\AWindowT.pas
File0006=source\ImageLister.pas
File0007=source\InternalT.pas
File0008=source\WindowT.pas