115129
Dec 26, 2015, updated at Dec 27, 2015 (UTC)
1496
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
Please also mark the comments that contributed to the solution of the article
Content-Key: 291749
Url: https://administrator.de/contentid/291749
Printed on: April 25, 2024 at 04:04 o'clock
2 Comments
Latest comment
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