Batch zum Auslesen von Verzeichnisinhalten

sarajane

Grünschnabel
Hallo!
Suche jetzt schon eine Weile nach ner Lösung, aber bevor ich ganz aufgebe dachte ich ich frage hier mal nach.
Ich brauche eine Textdatei in folgendem Format:

[Verzeichnispfad]
Dateiname.c
Dateiname.h

usw...

Das Heisst ich möchte von einem Verzeichnis aus alle Unterverzeichnisse und deren Unterverzeichnisse durchlaufen. Von jedem Verzeichnis jeweils den Pfad in eckigen Klammern in eine Textdatei schreiben und darunter alle vorhandenen c und h Dateien (am liebsten mit Angabe von Bedingungen, ob zugehörige .i Dateien existieren)

Ist das mit einer Batch Datei überhaupt möglich? Wenn ja wäre ich über Hinweise wirklich dankbar.
Vielen Dank schonmal im voraus.
 
Zuletzt bearbeitet:
Ja sicher geht sowas.
Mal ein kleines Beispiel, dass natürlich noch ein bisschen erweitert gehört.
Code:
@echo off
del %1
for /F "tokens=*" %%i in ('dir /s /B /AD %2') do (
  echo [%%i]
  dir /B %%i 2>NUL
) >> %1
Den Code hier in eine .bat oder .cmd Datei speichern

Das Skript hat 2 Aufrufparameter:
%1 ist die Datei in der das Listing ausgegeben wird
%2 ist der Pfad der gelistet werden soll

Zum Erweitern würd ich dir empfehlen die Hilfeseiten von for,if und set zu lesen. Aufrufbar sind die z.B. mit "help for". Desweiteren ist findstr immer praktisch, wenn man Text filtern will.
 
@olqs:
Warum setzt du das i in eckige Klammern und nicht in runde Klammern?
echo [%%i]

Was bedeutet diese Zeile? Was wird da in die NUL geschrieben?
dir /B %%i 2>NUL
 
Ok das %%i steht in den eckigen Klammern, weil eine Ausgabe von [Verzeichnispfad] im Logfile gewünscht ist.

Das 2>NUL heisst, dass die Fehlermeldungen, falls welche beim 'dir' ausgegeben werden aufs NUL Device, also ins Nirvana, umgeleitet werden.
 
Ach so, danke.
Was ist in dem Quellcode %2 und normal 2?
Gibt es eine Übersicht darüber, wie Fehlermeldungen oder Sonstiges bei der batch-Verarbeitung abgefragt werden können, sodass man weiss, dass an der Stelle in dem Quellcode die 2 für einen (bestimmten/allgemeinen) Fehler steht?
 
%2 ist der zweite Argument das dem Skript auf des Befehlszeile übergeben wurde.
Analog dazu %1, %3, ...

Die 2 steht immer für den Errorkanal, die 1 für die Standardausgabe eines Programms.
Die 1 wird aber meistens weggelassen.

Infos darüber findest du im Internet wenn du nach STDOUT und STDERR suchst.
Oftmals wirst du da was über Linux Programme finden, aber die Infos dafür gelten auch für Shell Komanndos unter Windows. Die Ein- und Ausgabekanäle werden hier gleich angesprochen.
 
Sicher kannst du mir auch per PN ein paar Fragen stellen.

Wenn du aber meinst, dass es auch noch andere interessieren könnte, dann mach nen neuen Thread auf.
 

Neue Beiträge

Zurück