115129
Goto Top

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:
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

Vielen Dank für jegliche Hilfestellungen.

Schöne Grüße,
Blattlaus

Content-Key: 291749

Url: https://administrator.de/contentid/291749

Ausgedruckt am: 28.03.2024 um 12:03 Uhr

Mitglied: rubberman
Lösung rubberman 27.12.2015 aktualisiert um 11:45:31 Uhr
Goto Top
Hallo Blattlaus.

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
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
Mitglied: 115129
115129 27.12.2015 um 11:45:28 Uhr
Goto Top
Hallo Rubberman,

vielen Dank für deine sofort funktionierende Lösung.

Natürlich hatte ich es gleich noch gestern Abend getestet und siehe da, alles wie gewünscht face-smile

Allerdings war ich dann zu Müde, um die Antwort gleich zu schreiben, deshalb erst heute.

Vielen Dank nochmals und bis zum nächsten Mal.

Einen schönen Sonntag noch.

Gruß,
Blattlaus