Wie kann ich eine laufende Batch-Datei unterbrechen, einen Befehl in ihrer Umgebung ausführen und dann fortfahren?


8

Mir ist bewusst, dass ich eine laufende Batch-Datei mit Crtl-C unterbrechen und dann die Ausführung fortsetzen kann.

Ist es jedoch möglich, einen Befehl in der cmd-Umgebung der Batchdatei auszuführen, während der Batch angehalten wird?

Beispielsweise möchte ich möglicherweise einen laufenden Stapel anhalten, einige zuvor festgelegte Variablen ändern und dann die Ausführung fortsetzen.


1
hinzufügen Linien mit Modifikationen (dh neuen Wert der Variablen festgelegt) nach einer Pause und weiterhin den batch
jet

so eine einfache Lösung! :) kann leider keinen Kommentar als Antwort auswählen
vedran

@jet: Wie würde man die Ausführung der Batch-Datei dort fortsetzen, wo sie aufgehört hat (dh direkt nach dem pauseBefehl)?
Martineau

@vedran: Ich habe es als Antwort hinzugefügt
Jet

@martineau: Vor der Pause setzen Sie zum Beispiel command.com ... und dann wissen Sie ... beenden Sie und Sie sind zurück zum Stapel, vielleicht gibt es einen besseren Weg
Jet

Antworten:


1

Fügen Sie nach der Pause Zeilen im Stapel mit Änderungen hinzu (dh setzen Sie einen neuen Wert für die Variable) und setzen Sie den Stapel fort


3

Mit diesem Code können beliebige Befehle im Batch-Kontext ausgeführt werden: Legen Sie eine Batch-Datei ab und spielen Sie damit.

@echo off

:loop 
  set cmd=
  set /p "cmd=Please give command, empty line to finish "
  if defined cmd (
    call %cmd%
    goto loop
  )

Um die Ausführung der Befehle zu beenden, drücken Sie einfach Enter

Um es in Ihrem Stapel zu verwenden, fügen Sie einfach eine Zeile mit dem Aufruf oben ein:

do stuff 
do more stuff

call interrupt_me.bat

do even more stuff

Wenn Sie sich fragen, warum es eine call %cmd%statt einer geraden gibt %cmd%, können Sie die übergebenen Variablen erweitern, damit Befehle wie echo %comspec%ordnungsgemäß funktionieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.