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.

Vedran
quelle
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

Jet
quelle
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.

wmz
quelle