Batch-Skript: Variable Anzahl an Batch-Dateien über Master-Batch mit Bildschirmausgabe der Reihe nach aufrufen

SpezNas2k15

Cadet 3rd Year
Registriert
Aug. 2015
Beiträge
34
Hallo,

Folgendes möchte ich erreichen:
Mir liegen mehrere einzelne Batch-Dateien gesammelt in einem Ordner vor. Gerne möchte ich nun die besagten Dateien über eine Art "Master-Batch"-Datei (befindet sich eine Ordnerebene höher) der Reihe nach aufrufen. Dabei sollen mit dem Aufrufen der nächsten Batch-Datei erst begonnen werden, wenn die Inhalte der vorherigen abgearbeitet wurden. Ferner soll mir jeweils der Bearbeitungsfortschritt (=Inhalt der jeweils aufgerufenen Batch-Dateien) auf dem Bildschirm entsprechend der jeweiligen "Echo"-Anweisung angezeigt werden.
Außerdem soll die Anzahl der nach und nach aufgerufenen Batch-Dateien variabel sein. D. h. ich möchte nicht einzelne Dateinamen in die Batchdatei eintragen müssen, sondern das Skript soll selbstständig erkennen welche Batch-Dateien in dem fraglichen Ordner vorhanden sind und diese dann mit in die Liste der nach und nach aufzurufenden Dateien mit einbeziehen.

Batch-Skript:
Nach einiger Recherche bin ich auf das nachfolgende Skript gestoßen, welches bei mir jedoch nicht recht funktionieren will.
@echo off &setlocal
pushd "C:\Master-Batch 3\Batchdateien"
for /f "delims=" %%i in ('dir /a-d /b *.bat') do ECHO call "%%i"
popd
PAUSE

Problem:
Nach dem Ausführen der "Master-Batch"-Datei mit dem o. g. Code werden mir zwar die im Ordner befindlichen Batch-Dateien im geöffneten Konsolenfenster namentlich genannt (vgl. Anhang), aber sie werden augenscheinlich nicht ausgeführt respektive es erfolgt keine Bildschirmausgabe in der Konsole oder in einem neuen Konsolenfenster.

Wie kann ich es erreichen, dass die einzelnen Batch-Dateien der Reihe nach aufgerufen werden und ihre Inhalte gemäß der in den besagten Dateien vorhandenen "Echo"-Anweisung auf dem Bildschirm ausgegeben werden?

Besten Dank für eure Hilfe!

Gruß
SpezNas2k15
 

Anhänge

  • Batch-Skript-Ausgabe_ohne_DateioeffnungProzessfortschritt.jpg
    Batch-Skript-Ausgabe_ohne_DateioeffnungProzessfortschritt.jpg
    37,4 KB · Aufrufe: 39
SpezNas2k15 schrieb:
@echo off &setlocal
pushd "C:\Master-Batch 3\Batchdateien"
for /f "delims=" %%i in ('dir /a-d /b *.bat') do ECHO call "%%i"
popd
PAUSE

wieso echo? das muss raus, dann geht's.
edit: übrigens, nur sicherheitshalber. achte darauf, dass deine "master-batchdatei" nicht im selben ordner liegt. sonst bekommst du einen loop.
 
  • Gefällt mir
Reaktionen: CyborgBeta und tollertyp
Redundanz schrieb:
wieso echo? das muss raus, dann geht's.
Das gibts ja nicht. So einfach und doch so effektiv. Aber Müdigkeit und fehlende Programmiererfahrung führen dann wohl auch zu solch trivialen Fehlern.

Besten Dank, Redundanz! Dann kann ich heute ja mal früher ins Bett gehen. ;)

Redundanz schrieb:
edit: übrigens, nur sicherheitshalber. achte darauf, dass deine "master-batchdatei" nicht im selben ordner liegt. sonst bekommst du einen loop.
Danke für die wertvolle Ergänzung. Ich habe die "Master-Batch"-Datei eine Ebene höher platziert. Ansonsten müsste ich meinen PC fortan wohl dauerhaft laufen lassen. :D
 
  • Gefällt mir
Reaktionen: Redundanz
SpezNas2k15 schrieb:
Ich habe die "Master-Batch"-Datei eine Ebene höher platziert.
Ich würde lieber die "slaves" in einem neuen Ordner eine Ebene tiefer platzieren ... dann gibt es keine unerwünschten Effekte.
 
@pizza4ever Wobei man ja fairerweise sagen muss, dass dieser Anwendungsfall (nämlich die stapelweise Verarbeitung irgendwelcher Dateien) wenigstens sehr nahe an dem ist, für was Batch ursprünglich auch gedacht war. (Auch wenn es hier eine Schleife ist über die vorhandenen Dateien und sie nicht einzeln eingetragen werden.)
 
  • Gefällt mir
Reaktionen: CyborgBeta
pizza4ever schrieb:
Sowas gehört alles bzw. Stück für Stück in Powershell migriert.
Das mag sein, aber ich bin nun einmal leider kein Experte für Programmierung – nicht einmal ansatzweise. Den o. g. Code habe ich nicht selbst geschrieben, sondern durch Recherchearbeit gefunden. Von daher freue ich mich, dass mein Problem auch so (einfach) lösbar gewesen ist.

CyborgBeta schrieb:
Ich würde lieber die "slaves" in einem neuen Ordner eine Ebene tiefer platzieren ... dann gibt es keine unerwünschten Effekte.
Guter Hinweis, aber sofern ich nichts verwechsle habe ich dies in meinem Fall bereits so umgesetzt:
"Master-Batch": .\Master-Batch
"Slave-Batches": .\Master-Batch\Slave-Batches

simpsonsfan schrieb:
@pizza4ever Wobei man ja fairerweise sagen muss, dass dieser Anwendungsfall (nämlich die stapelweise Verarbeitung irgendwelcher Dateien) wenigstens sehr nahe an dem ist, für was Batch ursprünglich auch gedacht war. (Auch wenn es hier eine Schleife ist über die vorhandenen Dateien und sie nicht einzeln eingetragen werden.)
Dann lag ich ja trotz meiner Unwissenheit mit meiner Idee glücklicherweise nicht ganz falsch. :)
 
  • Gefällt mir
Reaktionen: CyborgBeta
Naja, der Sprung von Batch zu Powershell its aber nicht soo groß wenn man sich damit 1x befasst hat.

Für vieles ist Powershell für Leute ohne Programmiererfahrung sogar einfacher, da es fertige CMDlets gibt.
 
  • Gefällt mir
Reaktionen: simpsonsfan
pizza4ever schrieb:
[...]Powershell für Leute ohne Programmiererfahrung sogar einfacher [...].
Na, dann werde ich zukünftig mal versuchen Powershell eine Chance zu geben (wenn es die Zeit zulässt...).
 
  • Gefällt mir
Reaktionen: simpsonsfan und pizza4ever
Zurück
Oben