Batch-Datei: Sortieren von Ordnern und Dateien alphabetisch
Die batch-Datei rekursiv echos Dateien und Ordner beim hinzufügen einige einfache Formatierungen wie Einrückungen zeigen die Rekursionstiefe, hinzufügen "/" vor dem Ordner-Namen, "*", bevor Sie bestimmte Dateien und überspringen Ordner namens "Archiv". Es funktioniert Super, außer, dass die Dateien und Ordner werden zufällig sortiert, anstatt alphabetisch. Wie könnte das geändert werden, um zu Sortieren, Dateien und Ordner alphabetisch?
@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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehr wenig änderung erforderlich. Convert FOR-Schleifen FOR /F ausgeführt sortiert DIR Befehle. Die
/A-D
option listet nur Dateien, und/AD
listet nur Verzeichnisse.Diese version sortiert die Dateien nach name
Sortieren Sie nach der Erweiterung, dann nach dem Namen, einfach ändern
/ONE
zu/OEN
.Versuchen Sie Ihr
for /d
Schleife auszu
und sehen, ob das einen Unterschied macht. Tatsächlich, die Bestellung von Namen ist das Standard-Verhalten für
dir
, so dass Sie könnte wahrscheinlich Weg mitWenn einige Ihrer Verzeichnisnamen haben Punkte in Ihnen, die Sie brauchen, um es zu ändern ein wenig.