Batch Auflistung von Unterordnern: Tiefe bestimmen

MyNamesPitt

Banned
Registriert
Jan. 2017
Beiträge
653
Guten Abend,

Das Ziel ist eine Art Inhaltsverzeichnis verschiedener Ordner + Unterordner zu erstellen. Ich habe hier aber verschiedene Verzeichnisse die sich über eine große Anzahl/tiefe von Unterordnern erstrecken. Den Code an sich habe hier schon fertig, - eine Mischung aus Internet Fund und eigenen Anpassungen. Leider listet er die komplette Tiefe auf, was muss ich abändern für das Begrenzen?

Code:
for /d %%a in (*) do dir /ad /on /s /b "%%a" >> ".\Index Folders.txt"

Beispiel:

.\Ordner1b\Ordner2b
.\Ordner1b\Ordner2b\Ordner3b

Ich bestimme 1:

.\Ordner1b\Ordner2b
.\Ordner1b\Ordner2b\

Wie sähe der Code aus?
 
Soll die Verzeichnistiefe fest sein oder variabel? Man könnte über die Anzahl der Backslash im Verzeichnisnamen gehen, oder die Verzeichnisse rekursiv durchlaufen.
 
Fest reicht, ich schätze da ändert sich dann nur 2-3 Ziffern die ich selbst abändern kann dann.
Nach Anzahl der Backslash reicht auch, rekursiv verstehe ich bisher eh noch nicht richtig. :)
Beim Ergebnis müsste sich da nichts ändern oder?

Das Problem beim Preset oben ist, das absolut jedes Unterverzeichnis mit aufgelistet wird. Bei Leage of Legends z.B. sind das zig. Ein Ordner wäre dann Backups, da brauch ich nur die Namen der Spiele und 1-3 Unterordner (Mods usw.).
 
Wenn Du nur geringe Verzeichnistiefen haben willst, dann ist vermutlich der rekursive Ansatz der schnellste:
Code:
@echo off 
setlocal enabledelayedexpansion

set startDir="."
 
for /D %%a in ("%startDir%\*") do (
	echo %%a >> ".\Index Folders.txt"
	for /D %%b in ("%%a\*") do (
		echo %%b >> ".\Index Folders.txt"
	)
)
Für jede Stufe, die Du tiefer gehen willst, musst Du eine Schleife hinzufügen.
 
Bin da jetzt nicht so der Experte, wo genau setzt ich die Schleife an? Ein Beispiel vielleicht? :confused_alt:

Ich habe mal verschiedenes durch probiert, aber nichts klappt wirklich.
Nach einer möglichen Interpretierung müsste das so aussehen:
Code:
@echo off 
setlocal enabledelayedexpansion
 
set startDir="."
 
for /D %%a in ("%startDir%\*") do (
	echo %%a >> ".\Index Folders.txt"
for /D %%b in ("%%a\*") do (
	echo %%b >> ".\Index Folders.txt"
for /D %%c in ("%%a\*\*") do (
	echo %%c >> ".\Index Folders.txt"
)
)
)

Aber ist leider murks.
Immer noch nur 1 Unterordner.
 
Code:
@echo off 
setlocal enabledelayedexpansion
 
set startDir="."

:: 'Schleife Über StartDir' 
for /D %%a in ("%startDir%\*") do (
    echo %%a >> ".\Index Folders.txt"
    :: '1. Ebene -> Schleife über die Verzeichnisse von %%a'
    for /D %%b in ("%%a\*") do (
        echo %%b >> ".\Index Folders.txt"
        :: '2. Ebene -> Schleife über die Verzeichnisse von %%b'
        for /D %%c in ("%%b\*") do (
            echo %%c >> ".\Index Folders.txt"
        )
    )
)

Man muss auch die Schleifenvariable anpassen ...
 
Zuletzt bearbeitet:
Strange, genau so hatte ich es einen Versuch vorm letzten, oben.
Ich habe wohl in der Textdatei nicht genau hin gesehen.

Nächste wäre (zuzüglich Schleifenende halt)
Code:
for /D %%d in ("%%c\*") do (
echo %%d >> ".\Index Folders.txt"

Dann habe ich es jetzt, super. Danke dir! :)
 

Ähnliche Themen

Antworten
43
Aufrufe
15.300
Zurück
Oben