Jak zmusić plik wsadowy do oczekiwania / uśpienia na kilka sekund?

57

Korzystam z pliku wsadowego, aby uruchomić kilka programów, które muszę uruchomić w tle. Do tej pory używałem polecenia pauzy, aby wykonać go po zakończeniu niektórych innych start-upów. Wolałbym używać poleceń oczekiwania lub uśpienia, ale wydaje się, że nie są one zawarte w systemie Windows 7.

Czy ktoś wie, jak ponownie wprowadzić te polecenia lub inną metodę, która osiąga te same wyniki?

Cegorach
źródło
1
Możesz też użyć PowerShell: stackoverflow.com/questions/1741490/…
Berzemus
Szkoda, że ​​plik sleep.exe nie został dostarczony przez MS jako domyślny od 2017 roku w folderze system32 lub w plikach programu / dowolnym standardowym miejscu. Proste c exe 40k lub więcej!
tgkprog
Tak jak ten sleepcmd.com
tgkprog

Odpowiedzi:

30

Istnieje wiele narzędzi do spania, które można pobrać i upuścić w folderze System32, jedno z nich zawiera zestaw Windows Server 2003 Resource Kit o nazwie sleep.exe.

Możesz także użyć sztuczki ping:

:sleep
ping 127.0.0.1 -n 2 -w 1000 > NUL
ping 127.0.0.1 -n %1 -w 1000 > NUL

następnie skądś w pliku wsadowym możesz wywołać go w następujący sposób:

CALL :sleep 1
John T.
źródło
1
sztuczka ping może być użyta jako rozwiązanie tymczasowe, ale wolałbym taki, który właśnie zawiesiłby proces, niż zajmować go czasowo. Który z elementów z listy, którą podłączyłeś, był tym, czego szukałem?
Cegorach
Chcesz sleep.exe
John T
próbowałem CALL: sleep 1 z testowego pliku wsadowego i odpowiedział: „system nie może znaleźć określonej etykiety wsadowej - SLEEP”
Cegorach
ponieważ musisz dodać podprogram, który opublikowałem powyżej. Call po prostu wywołuje podprogram, czyli 3 linie, które zamieściłem nad poleceniem call.
John T
126

Możesz użyć timeoutpolecenia:

To narzędzie akceptuje parametr limitu czasu oczekiwania na określony czas (w sekundach) lub do naciśnięcia dowolnego klawisza. Akceptuje również parametr, aby zignorować naciśnięcie klawisza.

Na przykład, aby poczekać 10 sekund:

TIMEOUT /T 10

Po więcej szczegółów:

TIMEOUT /?
Alex S.
źródło
1
dlaczego nie jest to wybrana jako poprawna odpowiedź? obecna jest bardzo trudna, jeśli mnie zapytasz
Dany Khalife
7
@Dany: ponieważ temat pochodzi z 2009 roku, kiedy większość instalacji to XP. Przed Vistą Timeout był tylko w wersjach serwerowych i Resource Kit, a nie w zwykłej instalacji XP. Rzeczywiście prawidłowa odpowiedź to Limit czasu.
mivk
6
@DanyKhalife Chyba że chcesz uruchomić proces w tle. „BŁĄD: Przekierowanie danych wejściowych nie jest obsługiwane, natychmiast wychodząc z procesu.”
Annan,
8
timeout /t <seconds> /nobreak > NUL
Prichard
źródło
Działa świetnie! calc && timeout 3 && notepad
Tamara Wijsman
6

Jest również

waitfor SomethingThatIsNeverHappening /t 10

Który będzie czekać od 1 do 99999 sekund.

Ptactwo
źródło
-1

Jeśli masz zainstalowany Python (i dodałeś ścieżkę instalacji do zmiennej środowiskowej), możesz pozwolić Pythonowi spać przy pomocy czegoś takiego:

echo from time import sleep; sleep(3) | python

(Jeśli jednak masz system Windows Vista lub nowszy, timeoutoczywiście jest to właściwa droga).

Protektor jeden
źródło