Jak wstrzymać na chwilę wykonanie w pliku wsadowym systemu Windows między poleceniem a następnym?
windows
batch-file
batch
Massimo
źródło
źródło
Odpowiedzi:
Prawidłowym sposobem na uśpienie w pliku wsadowym jest użycie
timeout
polecenia wprowadzonego w systemie Windows 2000.Aby poczekać od 29 do 30 sekund :
Limit czasu zostanie przerwany, jeśli użytkownik naciśnie dowolny klawisz; jednak polecenie akceptuje również opcjonalny przełącznik
/nobreak
, który skutecznie ignoruje wszystko, co użytkownik może nacisnąć, z wyjątkiem jawnegoCTRL-C
:Dodatkowo, jeśli nie chcesz, aby polecenie drukowało odliczanie na ekranie, możesz przekierować jego wynik do
NUL
:źródło
Ponieważ dotyczy to również tutaj, skopiuję moją odpowiedź z innej witryny .
Jeśli chcesz użyć polecenia ping, istnieje lepszy sposób. Będziesz chciał pingować adres, który nie istnieje, dzięki czemu możesz określić limit czasu z milisekundową precyzją. Na szczęście taki adres jest zdefiniowany w standardzie (RFC 3330) i tak jest
192.0.2.x
. To nie jest wymyślone, to naprawdę adres, którego jedynym celem jest nieistnienie (może nie być jasne, ale dotyczy nawet sieci lokalnych):Aby spać przez 123 milisekundy, użyj
ping 192.0.2.1 -n 1 -w 123 >nul
źródło
Ping
jest po prostu niewłaściwym narzędziem do pracy.Możesz także wstawić polecenie ping do hosta lokalnego. Zajmie to 4 sekundy (domyślnie). Przez niektórych uważany jest za kludge, ale mimo to działa całkiem dobrze.
Polecenie:
ping 127.0.0.1
źródło
ping
system operacyjny jest dostępny. Jeśli martwisz się wystarczająco o '95 '98 lub ME, to powinieneś być równie zaniepokojeni 6.22, który nie posiadaping
alboOświadczenie : nie jest to „idealne” rozwiązanie, więc nie zawracaj mi głowy pobijaniem tego, co polecam
ping
...Jeśli to możliwe, użyj
timeout
na pewno. Ale jak zauważono w komentarzach, nie zawsze jest to opcja (np. W trybie nieinteraktywnym). Po tym zgadzam się, żeping
„kludge” jest prawdopodobnie kolejną najlepszą opcją, ponieważ jest bardzo prosta. To powiedziawszy, oferuję inną opcję ... osadzić skrypt VB .Podstawa tego rozwiązania ma wiele innych zastosowań. Często VBS potrafi robić rzeczy, których partia nie może, lub przynajmniej robi to z drastycznie większą łatwością. Korzystając z przedstawionej tutaj techniki, możesz je mieszać (nie „płynnie”, ale „funkcjonalnie” ...).
Oto jeden linijka, aby utworzyć skrypt tymczasowy, wykonać go, a następnie usunąć. Skrypt śpi dla ciebie (w tym przykładzie przez 3 sekundy).
Oto w zasadzie ta sama rzecz, napisana nieco inaczej:
I wreszcie, jak
ping
,CScript
sama posiada opcję limitu czasu! Tak więc, jeśli wejdziesz w nieskończoną pętlę w skrypcie, możesz pozwolić tłumaczowi na wymuszanie czasu trwania. Uwaga: jest to operacja „zajęta”, która zjada procesor, dlatego nie polecam jej, gdy można skorzystać z tejWScript.Sleep
procedury, ale przedstawiam ją jako koncepcyjną opcję ze względu na kompletność:źródło