115129
27.12.2015, aktualisiert um 11:45:31 Uhr
1484
2
0
Batch - Ordnerstruktur bis bestimmte Anzahl von Unterverzeichnisse auslesen und in Textdatei schreiben
Hallo zusammen,
da ich länger nicht mehr hier im Forum war ist es längst überfällig wieder einmal eine Frage zu stellen.
Mein Vorhaben:
Ich möchte per Batch die Ordner-/Verzeichnisstruktur (keine Dateien) z.B. des Laufwerks C:\ D:\ und E:\ auslesen und in eine Textdatei schreiben.
Allerdings soll an diesem Beispiel aus dem Laufwerk C:\ nur die Struktur C:\Verzeichnisname\Verzeichnisname\Verzeichnisname\ ausgelesen werden.
Aus dem Laufwerk D:\ wiederum nur D:\Verzeichnisname\
Und aus dem Laufwerk E:\ wiederum nur E:\Verzeichnisname\Verzeichnisname\
...es folgen noch weitere Laufwerke, die ich jedoch später selbst einbinden kann (hoffe ich zumindest).
Kurzum, der unten aufgeführte Code gibt immer die gleiche Anzahl der Unterverzeichnisse aus. Wie muss der Code geändert werden, dass die Anzahl der aufgelisteten Unterverzeichnisse je nach Laufwerksbuchstabe passt?
Mein derzeitiger Code:
Ergebnis:
Vielen Dank für jegliche Hilfestellungen.
Schöne Grüße,
Blattlaus
da ich länger nicht mehr hier im Forum war ist es längst überfällig wieder einmal eine Frage zu stellen.
Mein Vorhaben:
Ich möchte per Batch die Ordner-/Verzeichnisstruktur (keine Dateien) z.B. des Laufwerks C:\ D:\ und E:\ auslesen und in eine Textdatei schreiben.
Allerdings soll an diesem Beispiel aus dem Laufwerk C:\ nur die Struktur C:\Verzeichnisname\Verzeichnisname\Verzeichnisname\ ausgelesen werden.
Aus dem Laufwerk D:\ wiederum nur D:\Verzeichnisname\
Und aus dem Laufwerk E:\ wiederum nur E:\Verzeichnisname\Verzeichnisname\
...es folgen noch weitere Laufwerke, die ich jedoch später selbst einbinden kann (hoffe ich zumindest).
Kurzum, der unten aufgeführte Code gibt immer die gleiche Anzahl der Unterverzeichnisse aus. Wie muss der Code geändert werden, dass die Anzahl der aufgelisteten Unterverzeichnisse je nach Laufwerksbuchstabe passt?
Mein derzeitiger Code:
for /d %%i in (C:) do @for /d %%a in ("%%~i\*.*") do echo %%a >>F:\temp\tmp.txt
for /d %%i in (C:) do @for /d %%a in ("%%~i\*.*") do echo %%a >>F:\temp\tmp.txt
for /d %%i in (C:) do @for /d %%a in ("%%~i\*.*") do echo %%a >>F:\temp\tmp.txt
Ergebnis:
C:\Verzeichnisname
D:\Verzeichnisname
E:\Verzeichnisname
D:\Verzeichnisname
E:\Verzeichnisname
Vielen Dank für jegliche Hilfestellungen.
Schöne Grüße,
Blattlaus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-Key: 291749
Url: https://administrator.de/contentid/291749
Ausgedruckt am: 28.03.2024 um 12:03 Uhr
2 Kommentare
Neuester Kommentar
Hallo Blattlaus.
Du kannst eine Subroutine rekursiv aufrufen.
Wenn du die entsprechenden Überverzeichnisse mit ausgeben willst (z.B. weil es auf Laufwerk C: auch Verzeichnisstrukturen gibt, die eine geringere Rekursionstiefe als 3 haben), dann entferne das REM in Zeile 12.
Grüße
rubberman
Du kannst eine Subroutine rekursiv aufrufen.
@echo off &setlocal
>"F:\temp\tmp.txt" call :recDir "C:" 3
>>"F:\temp\tmp.txt" call :recDir "D:" 1
>>"F:\temp\tmp.txt" call :recDir "E:" 2
exit /b
:recDir dirname level
if %2 equ 0 (
echo %1
) else (
REM echo %1
for /f %%i in ('set /a %2-1') do for /d %%j in ("%~1\*") do call :recDir "%%~j" %%i
)
exit /b
Grüße
rubberman