以下のバッチファイルは、再帰の深さを示すためのインデント、フォルダ名の前の「/」、特定のファイルの前の「*」の追加、「アーカイブ」という名前のフォルダのスキップなど、いくつかの簡単なフォーマットを追加しながら、ファイルとフォルダを再帰的にエコーします。ファイルとフォルダがアルファベット順ではなくランダムにソートされることを除けば、うまく機能します。ファイルとフォルダの両方をアルファベット順に並べ替えるために、これをどのように変更できますか?
@echo off
setlocal disableDelayedExpansion
pushd %1
set "tab= "
set "indent="
call :run
exit /b
:run
REM echo the root folder name
for %%F in (.) do echo %%~fF
echo ------------------------------------------------------------------
set "folderBullet=\"
set "fileBullet=*"
:listFolder
setlocal
REM echo the files in the folder
for %%F in (*.txt *.pdf *.doc* *.xls*) do echo %indent%%fileBullet% %%F - %%~tF
REM loop through the folders
for /d %%F in (*) do (
REM skip "Archive" folder
if /i not "%%F"=="Archive" (
REM if in "Issued" folder change the file bullet
if /i "%%F"=="Issued" set "fileBullet= "
echo %indent%%folderBullet% %%F
pushd "%%F"
set "indent=%indent%%tab%"
call :listFolder
REM if leaving "Issued folder change fileBullet
if /i "%%F"=="Issued" set "fileBullet=*"
popd
))
exit /b