Ich würde empfehlen, einige goto
Platzhalter in Ihrer Batch-Datei zu implementieren, so dass Ihr Skript einem klar definierten Pfad oder Workflow folgen kann.
ähnlich wie die Antwort hier ... Batch - If, ElseIf, Else
Wenn Sie von der Batch-Datei gestartet, einen Befehl auszuführen benötigen, können Sie die /C
Flags verwenden, um das neue Fenster zu schließen, sobald der Befehl abgeschlossen ist.
Sehen Sie diese Antwort hier ... BAT file: Open new cmd window and enter code in there
Auch ... Hier ist ein Beispiel, das ich, um die für den Benutzer hatte liegenden Eingang ermöglicht, wenn mehrere Aufgaben im Batch-Skript erfordern. Enthalten sind zwei Beispiele mit dem Flag /k
, mit dem die Fenster geöffnet bleiben können, und dem Flag /C
, das die anfängliche Eingabeaufforderung schließt.
@echo off
:start
cls
@echo Select An Action:
@echo.
@echo 1= Task 1 (new cmd /C, start npm -l)
@echo 2= Task 2 (new cmd /k, start npm -l)
@echo.
set /p userinp=Enter Your Choice:
set userinp=%userinp:~0,1%
if "%userinp%"=="1" goto 1
if "%userinp%"=="2" goto 2
if "%userinp%"=="3" goto 3
if "%userinp%"=="4" goto 4
if not "%userinp%" =="" @echo Invalid Choice
pause
goto start
:1
start cmd /C start npm -l
@echo Task 2 Complete...
@echo.
@echo Closing in 10 seconds...
timeout /t 10
goto end
:2
start cmd /k start npm -l
@echo Task 2 Complete...
@echo.
@echo Closing in 10 seconds...
timeout /t 10
goto end
:end
exit
Danke dafür. Leider führt das Hinzufügen des Flags "/ C" dazu, dass dieses Skript sofort geschlossen wird und auch die laufende Anwendung beendet. –
Wäre es besser, das '/ k' Flag in Ihrem Fall anstelle von'/C' zu verwenden? – BugZap
Gleiches Problem. Wenn ich die Stapelverarbeitungsdatei ausführe, wird ein Programm gestartet, bis es vom Benutzer beendet wird, zu welchem Zeitpunkt das Eingabeaufforderungsfenster geöffnet bleibt, das von der Stapelverarbeitungsdatei erstellt wurde. Das sofortige Beenden des Fensters mit '/ k' oder'/C' beendet auch den Prozess, der offen bleiben soll. –