MS-DOS Wstrzymywanie pliku wsadowego za pomocą klawisza Enter


146

Czy w pliku wsadowym MS-DOS można wstrzymać skrypt i poczekać, aż użytkownik naciśnie klawisz Enter?

Chciałbym to zrobić wewnątrz pętli for. Po każdej iteracji chcę, aby skrypt zatrzymywał się i czekał, aż użytkownik naciśnie „Enter”

Odpowiedzi:


247

Jest pausepolecenie, które właśnie to robi, chociaż nie jest to konkretnie klawisz Enter.

Jeśli naprawdę chcesz poczekać tylko na klawisz Enter, możesz użyć setpolecenia, aby poprosić użytkownika o wprowadzenie danych z fikcyjną zmienną, na przykład:

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


17
Nie musisz podawać nazwy zmiennej: set /p=Hit ENTER to continue...lub po prostu set /p=nie potrzebujesz zachęty.
dbenham

2
Z jakiegoś powodu moja aplikacja działa tuż obok logiki pauzy. Bardzo dziwny.
ouflak

11
Wydaje się trochę dziwne, że słowo „aplikacja” jest używane w tym kontekście (plik wsadowy)
Adrian Grigore

nie działa mi. działa tylko od drugiego uruchomienia, gdy „ustawianie” zostało opracowane / zapisane w środowisku env.
sesja

13

pausepolecenie jest tym, czego szukasz. Jeśli patrzysz TYLKO na przypadek, gdy zostanie naciśnięty klawisz Enter, możesz nadużyć runaspolecenia:

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

ekran zostanie zamrożony do momentu naciśnięcia klawisza Enter. Bardziej podoba mi się set/p=to, że jeśli naciśniesz inne przyciski niż enter, nie zostaną one wyświetlone.


4

Możesz to zrobić pausepoleceniem, przykład:

dir
pause
echo Now about to end...
pause

1
pauserzeczywiście jest jedyną prawidłową odpowiedzią MS-DOS(wszystkie inne odpowiedzi działają cmdtylko w). Tak więc twoja odpowiedź jest właściwie jedyną całkowicie poprawną odpowiedzią na to specjalne pytanie (chociaż sugerowano to już ponad 7 lat wcześniej)
Stephan

3

W zależności od systemu operacyjnego używasz, jeśli są elastyczne, a następnie CHOICEmogą być wykorzystane do czekać na prawie dowolny klawisz EXCEPTwprowadź

Jeśli naprawdę odnosisz się do tego, co Microsoft nalega na wywołanie „wiersza polecenia”, który jest po prostu emulatorem MS-DOS, być może TIMEOUTmoże pasować do twojego celu ( timeout /t -1czeka na dowolny klawisz, nie tylko ENTER) i oczywiście CHOICEjest ponownie dostępny w ostatnich edycjach WIN.

I ostrzeżenie SET /P- ale set /p DUMMY=Hit ENTER to continue...będzie działać,

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

wykryje, czy wpisano tylko ENTER, czy coś innego, kończącego się na ENTER.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.