886 Stimmen

Wie man mehrere BAT-Dateien innerhalb einer BAT-Datei ausführt

Ich versuche, meine commit-build.bat um andere .BAT-Dateien als Teil unseres Build-Prozesses auszuführen.

Inhalt der commit-build.bat :

"msbuild.bat"
"unit-tests.bat"
"deploy.bat"

Das scheint einfach zu sein, aber commit-build.bat führt nur den ersten Eintrag in der Liste aus ( msbuild.bat ).

Ich habe jede der Dateien einzeln ausgeführt, ohne dass es Probleme gab.

4 Stimmen

@sean - Sie müssen nicht das komplette Cygwin-Paket installieren, um die Kommandozeilenprogramme zum Laufen zu bringen. Nehmen Sie einfach alle Cygwin-Dlls aus dem Paket und legen Sie sie in ein Verzeichnis mit einem Pfad, legen Sie alle Ihre Tools in ein anderes Verzeichnis mit einem Pfad, und Sie sind bereit zu gehen.

0 Stimmen

Wenn man davon ausgeht, dass es sich bei jeder dieser Dateien nur um eine Stapelverarbeitung handelt, warum werden sie nicht einfach in eine große Datei eingefügt und die Timeout-Funktion verwendet, um jedes Mal zu starten.

32voto

user2314621 Punkte 381

Wenn wir zwei Batch-Skripte haben, aaa.bat und bbb.bat, und diese wie folgt aufrufen

call aaa.bat
call bbb.bat

Wenn das Skript ausgeführt wird, ruft es zuerst aaa.bat auf, wartet, bis der Thread von aaa.bat beendet ist, und ruft dann bbb.bat auf.

Wenn Sie jedoch nicht warten wollen, bis aaa.bat beendet ist, um bbb.bat aufzurufen, versuchen Sie, die START Befehl:

START ["title"] [/D path] [/I] [/MIN] [/MAX] [/SEPARATE | /SHARED]
  [/LOW | /NORMAL | /HIGH | /REALTIME | /ABOVENORMAL | /BELOWNORMAL]
  [/AFFINITY <hex affinity>] [/WAIT] [/B] [command/program]
  [parameters]

Prüfung:

start /b aaa.bat
start /b bbb.bat

30voto

Jay Punkte 1605

Sie rufen mehrere Batches auf, um ein Programm zu kompilieren. Ich gehe davon aus, dass, wenn ein Fehler auftritt:
1) Das Programm innerhalb des Batch wird mit einem Errorlevel beendet;
2) Sie wollen es wissen.

for %%b in ("msbuild.bat" "unit-tests.bat" "deploy.bat") do call %%b|| exit /b 1

Auf diese Weise werden alle Stapel der Reihe nach aufgerufen, aber bei einem Fehler angehalten, so dass der Bildschirm unverändert bleibt und Sie keine Fehlermeldung sehen.

24voto

butterchicken Punkte 13015
call msbuild.bat
call unit-tests.bat
call deploy.bat

21voto

Zifre Punkte 25764

Zum Aufrufen einer .bat Datei innerhalb einer .bat Datei, verwenden Sie

call foo.bat

(Ja, das ist dumm, es würde mehr Sinn machen, wenn Sie es mit foo.bat wie in der Eingabeaufforderung, aber der korrekte Weg ist die Verwendung von call .)

14voto

Minhas Kamal Punkte 17150

Der einfachste Weg, mehrere Batch-Dateien parallel auszuführen

start "systemLogCollector" /min cmd /k call systemLogCollector.bat
start "uiLogCollector" /min cmd /k call uiLogCollector.bat
start "appLogCollector" /min cmd /k call appLogCollector.bat

running-multiple-batch-files Hier werden drei Batchdateien auf separaten Befehlsfenstern in einem minimierten Zustand ausgeführt. Wenn Sie nicht wollen, dass sie minimiert werden, dann entfernen Sie <code>/min</code> . Wenn Sie sie später nicht kontrollieren müssen, können Sie die Titel auch weglassen. Ein einfacher Befehl wäre also <code>start cmd /k call systemLogCollector.bat</code>


Wenn Sie sie beenden wollen, führen Sie diese Befehle aus.

taskkill /FI "WindowTitle eq appLogCollector*" /T /F
taskkill /FI "WindowTitle eq uiLogCollector*" /T /F
taskkill /FI "WindowTitle eq systemLogCollector*" /T /F

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X