Pause der MS-DOS-Batchdatei mit Eingabetaste

146

Ist es in der MS-DOS-Batchdatei möglich, das Skript anzuhalten und darauf zu warten, dass der Benutzer die Eingabetaste drückt?

Ich möchte dies in einer for-Schleife tun. Nach jeder Iteration soll das Skript angehalten werden und darauf warten, dass der Benutzer die Eingabetaste drückt.

dr_rk
quelle

Antworten:

247

Es gibt einen pauseBefehl, der genau das tut, obwohl es nicht speziell die Eingabetaste ist.

Wenn Sie wirklich nur auf die Eingabetaste warten möchten, können Sie mit dem setBefehl nach Benutzereingaben mit einer Dummy-Variablen fragen, z. B.:

set /p DUMMY=Hit ENTER to continue...

abjuk
quelle
17
Sie müssen keinen Variablennamen angeben: set /p=Hit ENTER to continue...oder einfach, set /p=wenn Sie keine Eingabeaufforderung benötigen.
Dbenham
2
Aus irgendeinem Grund sprengt meine App direkt hinter der Pausenlogik. Sehr eigenartig.
Ouflak
11
Es scheint ein bisschen seltsam zu sein, das Wort "App" in diesem Zusammenhang zu verwenden (eine Batch-Datei)
Adrian Grigore
es funktioniert nicht bei mir. funktioniert erst ab dem zweiten Start, wenn 'set' ausgearbeitet / in der Umgebung gespeichert wurde.
ses
13

pauseBefehl ist das, wonach Sie suchen. Wenn Sie NUR den Fall suchen, in dem die Eingabetaste gedrückt wird, können Sie den runasBefehl missbrauchen :

runas /user:# "" >nul 2>&1

Der Bildschirm wird eingefroren, bis die Eingabetaste gedrückt wird. Was mir besser gefällt, set/p=ist, dass wenn Sie andere Tasten als die Eingabetaste drücken, diese nicht angezeigt werden.

npocmaka
quelle
4

Sie können dies mit dem pauseBefehl tun , Beispiel:

dir
pause
echo Now about to end...
pause
Vic_HT
quelle
1
pausein der Tat ist die einzig gültige Antwort für MS-DOS(alle anderen Antworten funktionieren cmdnur in). Ihre Antwort ist also die einzig völlig richtige für diese spezielle Frage (obwohl sie bereits vor mehr als 7 Jahren vorgeschlagen wurde)
Stephan
3

Je nachdem , welche OS Sie verwenden, wenn Sie flexibel sind, dann CHOICEkann fast warten auf verwendet werden , eine beliebige Taste EXCEPTeingeben

Wenn Sie sich wirklich auf das beziehen, worauf Microsoft besteht, "Eingabeaufforderung" aufzurufen, bei der es sich lediglich um einen MS-DOS-Emulator handelt, entspricht dies TIMEOUTmöglicherweise Ihrem Zweck ( timeout /t -1wartet auf einen beliebigen Schlüssel, nicht nur ENTER) und ist natürlich CHOICEin den letzten WIN-Editionen wieder verfügbar.

Und eine Warnung zu SET /P- während set /p DUMMY=Hit ENTER to continue...wird funktionieren,

set "dummy="
set /p DUMMY=Hit ENTER to continue...
if defined dummy (echo not just ENTER was pressed) else (echo just ENTER was pressed)

erkennt, ob nur ENTER oder etwas anderes, das mit ENTER endet, eingegeben wurde.

Magoo
quelle