Batch-Programm funktioniert nicht wie es sollte!

Batch-Programm funktioniert nicht wie es sollte!

Ich habe ein Batch-Skript erstellt (vollständig ansehen hier), um zuerst einige Dienste und dann eine Anwendung zu starten. Nachdem die Anwendung abgeschlossen ist, sollte der Batch ausgeführt werden, GOTO somewherewartet aber darauf, dass das Programm beendet wird, um fortfahren zu können.

Kopfzeile zum Starten und Fortfahren der Anwendung:

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"
    IF NOT %BACK%==NULL GOTO %BACK%
    GOTO STARTAPPCONT

Dieser Header wird von einem anderen Header aufgerufen:

:STARTAPP
    cls
    echo Starting Application
    GOTO %BATCH%

%BATCH%enthält den Namen für die nächste Kopfzeile – im obigen Fall vmSTARTAPP.

Wenn ich es aus einem neuen Eingabeaufforderungsfenster ausführe, funktioniert es einwandfrei, nur nicht in diesem Batch.

Was mache ich falsch?

PS: Beziehen Sie diese Frage nicht auf meine vorherige Frage. Dies ist ein völlig anderer Fall.

Antwort1

Könnten Sie versuchen, die Zeilen zu ersetzen, die zeigen

:vmSTARTAPP
    "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

mit

:vmSTARTAPP
    start "Starting VMWare" /B "C:\Program Files (x86)\VMware\VMware Workstation\vmware.exe"

Ich gehe davon aus, dass Sie VMWare im Hintergrund starten und ohne Unterbrechung weitermachen möchten, und theoretisch sollte dies möglich sein.

Der startBefehl weist DOS an, den von Ihnen übergebenen Befehl auszuführen (in diesem Fall „C:\Programme (x86)\VMware\VMware Workstation\vmware.exe“). Standardmäßig wartet es nicht auf die Rückkehr des von Ihnen übergebenen Befehls, sondern führt ihn in einem separaten Prozess aus.

Standardmäßig wird jede Zeile in einer Batchdatei nacheinander ausgeführt und wartet, bis jede Zeile ausgeführt und zurückgegeben wurde, bevor mit der nächsten Zeile fortgefahren wird. Der startBefehl umgeht dies, indem er das Programm, das Sie ihm übergeben, in einem separaten Prozess (DOS-Fenster) startet. Ihre Batchdatei stößt also auf diese Zeile, führt sie wie gewohnt aus, erkennt, dass der startBefehl zurückgegeben wurde (nachdem ein neuer Prozess zum Ausführen Ihres Befehls erstellt wurde) und Ihre Batchdatei fährt fort, als ob nichts Unerwartetes passiert wäre.

Der "Starting VMWare"Titel ist einfach das, ein Titel. Das neu erstellte DOS-Fenster hätte diesen Titel, wenn es nicht das /BArgument gäbe, das ihm sagt, das neue DOS-Fenster nicht anzuzeigen. Der Titel ist irgendwie notwendig, aber irgendwie auch optional, und ich hatte gelegentlich einen WTF-Moment in Skripten ohne ihn, aber diese Fälle sind eher die Ausnahme als die Regel.

Weitere Informationen zum Start-Befehl finden Sie unterhttp://ss64.com/nt/start.html

verwandte Informationen