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?


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

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 /?

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,


6

Jest również

waitfor SomethingThatIsNeverHappening /t 10

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



-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).

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.