
45821
29.03.2007, aktualisiert am 02.04.2007
Stapelverarbeitung *.bat-Datei, welche andere *.bat-Dateien wiederum ausführen soll
Stapelverarbeitung [*.bat-Datei, welche andere *.bat-Dateien wiederum ausführen soll]
Hallo ihr Programmierer!
Ich bräuchte bitte eure Hilfe. Und zwar habe ich folgendes Problem: Ich habe eine kleine Musiksammlung als Backup meiner CD-Sammlung im MP3-Format auf meiner Festplatte. Ich beiss mir schon seit über einem Jahr die Zähne daran aus. Und zwar möchte ich, dass - nach folgendem Schema - ein Skript/Tool/Programm/oder ähnliches meine Ordner durchforstet und diese dann in eine Text-Datei legt. Dazu habe ich ja schon ein nettes Skript. dirlist.bat heisst das gute Programm. Ich möchte aber nicht jedes Mal in den einzelnen Ordner gehen, um dirlist.bat auszuführen.
Ich brauch jetzt also noch - am besten eine .bat-Datei - welche hintereinanderweg alle *.bat-Dateien auf der Festplatte F:\ ausführt. Z.B.:
"musik\a\anton quartet\dirlist.bat"
"musik\b\black sabbath\dirlist.bat"
"musik\cchimaira\dirlist.bat"
...
..etc
Dazu wäre es sinnvoll, wenn es eine Konfigurationsdatei gibt (txt-file ist ok), wo ich die Order reinschreiben kann, welche *.bat-Dateien ausgeführt werden sollen (siehe Beispiel). Das würde mir erheblich die Arbeit erleichtern, da ich nicht nur von meiner Musiksammlung einen Überblick haben will, sondern auch von anderen Sachen, wie Office-Dokumente etc... Also, es geht hier um eine Stapelverarbeitung.
2. Problem:
Ich weiß, es gibt Tools wie dirlist.bat, Directory Lister 0.7.2 etc.. aber ich möchte eine *.bat-Datei haben (ich nenne sie jetzt einfach mal *.dirlist2000.bat) , die -nur- die Verzeichnisse listet, in eine *.txt-Datei schreibt. Und zwar nach folgendem Beispiel:
f:\musik\a\dirlist2000.bat
Hier liegt also dirlist2000.bat drinne. Der Ordner
"f:\musik\a\"
enthält aber noch den Unterordner
"anton quartet\album x" und "ali karascha kinh\album y"
Und in der Textdatei nach dem Ausführen der *.Bat-Datei soll dann drinne stehen:
*/zitat anfang/*
anton quartet\album x
ali karascha kinh\album y
*/zitat anfang/*
(Natürlich ohne */zitat anfang/* und */zitat anfang/*)
Es wäre echt cool, wenn ihr mir helfen könntet! Danke!
PS.: Sorry für meine umständliche Aussprache.
Hallo ihr Programmierer!
Ich bräuchte bitte eure Hilfe. Und zwar habe ich folgendes Problem: Ich habe eine kleine Musiksammlung als Backup meiner CD-Sammlung im MP3-Format auf meiner Festplatte. Ich beiss mir schon seit über einem Jahr die Zähne daran aus. Und zwar möchte ich, dass - nach folgendem Schema - ein Skript/Tool/Programm/oder ähnliches meine Ordner durchforstet und diese dann in eine Text-Datei legt. Dazu habe ich ja schon ein nettes Skript. dirlist.bat heisst das gute Programm. Ich möchte aber nicht jedes Mal in den einzelnen Ordner gehen, um dirlist.bat auszuführen.
Ich brauch jetzt also noch - am besten eine .bat-Datei - welche hintereinanderweg alle *.bat-Dateien auf der Festplatte F:\ ausführt. Z.B.:
"musik\a\anton quartet\dirlist.bat"
"musik\b\black sabbath\dirlist.bat"
"musik\cchimaira\dirlist.bat"
...
..etc
Dazu wäre es sinnvoll, wenn es eine Konfigurationsdatei gibt (txt-file ist ok), wo ich die Order reinschreiben kann, welche *.bat-Dateien ausgeführt werden sollen (siehe Beispiel). Das würde mir erheblich die Arbeit erleichtern, da ich nicht nur von meiner Musiksammlung einen Überblick haben will, sondern auch von anderen Sachen, wie Office-Dokumente etc... Also, es geht hier um eine Stapelverarbeitung.
2. Problem:
Ich weiß, es gibt Tools wie dirlist.bat, Directory Lister 0.7.2 etc.. aber ich möchte eine *.bat-Datei haben (ich nenne sie jetzt einfach mal *.dirlist2000.bat) , die -nur- die Verzeichnisse listet, in eine *.txt-Datei schreibt. Und zwar nach folgendem Beispiel:
f:\musik\a\dirlist2000.bat
Hier liegt also dirlist2000.bat drinne. Der Ordner
"f:\musik\a\"
enthält aber noch den Unterordner
"anton quartet\album x" und "ali karascha kinh\album y"
Und in der Textdatei nach dem Ausführen der *.Bat-Datei soll dann drinne stehen:
*/zitat anfang/*
anton quartet\album x
ali karascha kinh\album y
*/zitat anfang/*
(Natürlich ohne */zitat anfang/* und */zitat anfang/*)
Es wäre echt cool, wenn ihr mir helfen könntet! Danke!
PS.: Sorry für meine umständliche Aussprache.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 55364
Url: https://administrator.de/forum/stapelverarbeitung-bat-datei-welche-andere-bat-dateien-wiederum-ausfuehren-soll-55364.html
Ausgedruckt am: 22.04.2025 um 17:04 Uhr
9 Kommentare
Neuester Kommentar
zu 1.:
Zum Datei erstellen (das Dus ncith mit Hand machen mußt):
zu 2:
Hab ich nicht ganz verstanden: Willst Du wissen wie die Unterordner heißen oder der ganze?
Versuch mal ob du das hier meinst:
miniversum
Zum Datei erstellen (das Dus ncith mit Hand machen mußt):
dir /b /s dirlist.bat>dirlistbats.txt
Zum Batch Datei zum Starten der einzelnen dirlist.bat:@for /F "delims=" %%a in (dirlistbats.txt) do call %%a
zu 2:
Hab ich nicht ganz verstanden: Willst Du wissen wie die Unterordner heißen oder der ganze?
Versuch mal ob du das hier meinst:
@for /F "delims=" %%a in ('dir /b /s /ad') do echo %%a>>Verzeichnisse.txt
miniversum
Moin socialbreakz,
willkommen im Forum.
Ich würde miniversums Ansatz weiterspinnen und das ganze einmalig mit einem Einzeiler machen.
Demo am CMD-Prompt:
Sieht also ein Ausschnitt der Sammlung so aus
..würde rausfallen...
Falls das Ganze eine Ebene tiefer hin soll (also die dirlist.txt auf Album-Ebene liegen soll), dann eben die FOR-Parameter etwas hin und her schieben.
Dann kannst Du immer noch bei Bedarf vorher alle vorhandenen dirlist.txt rekursiv löschen (del /s /q f:\musik\dirlist.txt).
Oder einen Batch mit optionalem Parameter "Ab-Unterordner" draus machen:
Aufruf von "DirList1998.bat c" würde dann nur die *.mp3s unterhalb von f:\musik\c\ abfackeln.
Gruss
Biber
[Edit] Gerade dieses hier gelesen:
[/Edit]
willkommen im Forum.
Ich würde miniversums Ansatz weiterspinnen und das ganze einmalig mit einem Einzeiler machen.
Demo am CMD-Prompt:
for /f "tokens=1-3,* delims=\" %i in ('dir /a-d /b /s f:\musik\*.mp3' ) do @echo %l>>"%i\%j\%k\dirlist.txt"
f:\musik\x\artist_x\album_gz
f:\musik\s\artist_s\album_fy
f:\musik\r\artist_r\album_wi bla blubb
echo artist_x\album_gz\Titel eins.mp3 >>"f:\musik\x\dirlist.txt"
echo artist_x\album_gz\Titel zwei.mp3 >>"f:\musik\x\dirlist.txt"
echo artist_x\album_gz\Titel drei.mp3 >>"f:\musik\x\dirlist.txt"
echo artist_s\album_fy\Song A.mp3 >>"f:\musik\s\dirlist.txt"
echo artist_s\album_fy\Song B.mp3 >>"f:\musik\s\dirlist.txt"
echo artist_s\album_fy\Song C.mp3 >>"f:\musik\s\dirlist.txt"
...
echo artist_r\album_wi bla blubb\Jingle X.mp3 >>"f:\musik\r\dirlist.txt"
Falls das Ganze eine Ebene tiefer hin soll (also die dirlist.txt auf Album-Ebene liegen soll), dann eben die FOR-Parameter etwas hin und her schieben.
Dann kannst Du immer noch bei Bedarf vorher alle vorhandenen dirlist.txt rekursiv löschen (del /s /q f:\musik\dirlist.txt).
Oder einen Batch mit optionalem Parameter "Ab-Unterordner" draus machen:
::----DirList1998.bat
@for /f "tokens=1-3,* delims=\" %%i in ('dir /a-d /b /s f:\musik\%1\*.mp3' ) do @echo %%l>>%%i\%%j\%%k\dirlist.txt
Gruss
Biber
[Edit] Gerade dieses hier gelesen:
Resultat wäre also diese datei: "a.txt"
f:\musik\a\a.txt
> würde bei meiner Variante bedeuten, dass nicht in "%%i\%%j\%%k\dirlist.txt" umgeleitet wird, sondern in "%%i\%%j\%%k\%%j.txt".f:\musik\a\a.txt
[/Edit]
So, socialbrakz,
um die Restfragen auch noch kurz zu beantworten: Ja. Ja.
Ja. Die Sachen, die miniversum und ich als Batchfragmente hier gepostet haben, per Copy & Paste in einen Editor kopieren, speichern als DenkDirWasKreativesAus.bat und testen.
"Testen" heisst, Du solltest erst einmal diese Anweisungen nur simulieren lassen.
Beispiel: wenn Du miniversums Schnipsel nimmst.
..der ja in einer Batch laufen soll, dann teste erstmal den wesentlichen Teil am CMD-Prompt
[Am CMD-Prompt haben die Zählvariablen ein Prozentzeichen, im Batch zwei].
Wenn Du mein "DirList1998.bat" testen willst, kopiere Dir folgenden Test-Schnipsel als .bat-Datei:
Dann siehst Du, was passieren würde und kannst ggf. anpassen.
Zu der Frage mit dem "alle dirlist.txt einsammeln und in anderes Sammel-Verzeichnis kopieren":
Bekommst Du jetzt selbst hin, wenn Du die obigen "FOR /F ...in ('DIR /b /s ...')"-Konstrukte verstanden hast.
Jetzt müsstest Du ja "nur" alle ".txt"-Dateien aus allen Unterverzeichnissen unerhalb von "F:\Musik" in einen anderen Pfad kopieren.
Eventuell solltest Du eine seltenere Extension als .txt verwenden, damit du auch wirklich nur diese Dateien erwischt.
Das wird am CMD-Prompt so etwas wie ...
Du findest einige ähnliche Beispiele hier im Forum in Batch und Shell, auch mit Playlists und vergleichbarem.
Gruss
Biber
um die Restfragen auch noch kurz zu beantworten: Ja. Ja.
Ja. Die Sachen, die miniversum und ich als Batchfragmente hier gepostet haben, per Copy & Paste in einen Editor kopieren, speichern als DenkDirWasKreativesAus.bat und testen.
"Testen" heisst, Du solltest erst einmal diese Anweisungen nur simulieren lassen.
Beispiel: wenn Du miniversums Schnipsel nimmst.
@for /F "delims=" %%a in ('dir /b /s /ad') do echo %%a>>Verzeichnisse.txt
@for /F "delims=" %a in ('dir /b /s /ad') do echo %a
Wenn Du mein "DirList1998.bat" testen willst, kopiere Dir folgenden Test-Schnipsel als .bat-Datei:
::----DirList1998Test.bat
@for /f "tokens=1-3,* delims=\" %%i in ('dir /a-d /b /s f:\musik\%1\*.mp3' ) do @echo @echo %%l^>^>%%i\%%j\%%k\dirlist.txt
Zu der Frage mit dem "alle dirlist.txt einsammeln und in anderes Sammel-Verzeichnis kopieren":
Bekommst Du jetzt selbst hin, wenn Du die obigen "FOR /F ...in ('DIR /b /s ...')"-Konstrukte verstanden hast.
Jetzt müsstest Du ja "nur" alle ".txt"-Dateien aus allen Unterverzeichnissen unerhalb von "F:\Musik" in einen anderen Pfad kopieren.
Eventuell solltest Du eine seltenere Extension als .txt verwenden, damit du auch wirklich nur diese Dateien erwischt.
Das wird am CMD-Prompt so etwas wie ...
For /f "delims=" %i in ('dir /b /s f:\Musik\*.txt') do @copy "%i" "x:\Sammelbecken\%~nxi"
Du findest einige ähnliche Beispiele hier im Forum in Batch und Shell, auch mit Playlists und vergleichbarem.
Gruss
Biber
Moin socialbreakz,
danke für die Rückmeldung.
Dann gehe Dich davon aus, dass Dein Batch im Laufe der nächsten Zeit noch länger wird...
Ich hoffe jedenfalls, Du postest eine Skizze Deiner Lösung hier als neuen Beitrag bzw. als Tutorial, sobald Du damit zufrieden bist..
Ich setze jetzt allerdings schon mal den Status dieses Beitrags auf "Gelöst" und "Geschlossen, weil ...
... die ursprüngliche Fragestellung mit "...*.bat, die andere *.bat ausführen soll.." ist ja irgendwo nicht mehr im Fokus.
Sollte es noch Nachfragen von Deiner Seite zu dem oben begonnenen Batch geben, dann mache ich gerne auf PN-Aufforderung diesen Beitrag wieder auf.
Ansonsten mach ich hier an dieser Stelle mal einen Schnitt. <----katt----->
Schöne Woche Dir und melde Dich
Biber
danke für die Rückmeldung.
Dann gehe Dich davon aus, dass Dein Batch im Laufe der nächsten Zeit noch länger wird...
Ich hoffe jedenfalls, Du postest eine Skizze Deiner Lösung hier als neuen Beitrag bzw. als Tutorial, sobald Du damit zufrieden bist..
Ich setze jetzt allerdings schon mal den Status dieses Beitrags auf "Gelöst" und "Geschlossen, weil ...
... die ursprüngliche Fragestellung mit "...*.bat, die andere *.bat ausführen soll.." ist ja irgendwo nicht mehr im Fokus.
Sollte es noch Nachfragen von Deiner Seite zu dem oben begonnenen Batch geben, dann mache ich gerne auf PN-Aufforderung diesen Beitrag wieder auf.
Ansonsten mach ich hier an dieser Stelle mal einen Schnitt. <----katt----->
Schöne Woche Dir und melde Dich
Biber