Как приостановить выполнение на некоторое время в командном файле Windows между командой и следующей?
windows
batch-file
batch
Massimo
источник
источник
Ответы:
Правильный способ спать в командном файле - использовать
timeout
команду, представленную в Windows 2000.Чтобы подождать где-то между 29 и 30 секундами :
Тайм-аут будет прерван, если пользователь нажмет любую клавишу; однако команда также принимает необязательный параметр
/nobreak
, который фактически игнорирует все, что пользователь может нажать, кроме явногоCTRL-C
:Кроме того, если вы не хотите, чтобы команда выводила на экран свой обратный отсчет, вы можете перенаправить вывод
NUL
:источник
Так как это применимо и здесь, я скопирую свой ответ с другого сайта .
Если вы хотите использовать пинг, есть лучший способ. Вы захотите пропинговать адрес, который не существует, поэтому вы можете указать время ожидания с точностью до миллисекунды. К счастью, такой адрес определен в стандарте (RFC 3330), и это так
192.0.2.x
. Это не выдумка, это действительно адрес с единственной целью несуществования (это может быть непонятно, но это применимо даже в локальных сетях):Чтобы спать в течение 123 миллисекунд, используйте
ping 192.0.2.1 -n 1 -w 123 >nul
источник
Ping
это просто неправильный инструмент для работы.Вы также можете вставить пинг в localhost. Это займет 4 секунды для завершения (по умолчанию). Некоторые считают это клуджем, но все равно работает довольно хорошо.
Команда:
ping 127.0.0.1
источник
ping
идет ли ваша ОС или нет . Если вы достаточно волнуетесь о '95 '98 или обо мне, то вы должны быть в равной степени обеспокоены и 6.22, который не имеетping
ни одногоОтказ от ответственности : это не «идеальное» решение, так что не пытайтесь меня бить по голове тем же, что и тем, кто рекомендует
ping
…По возможности используйте
timeout
точно. Но, как отмечено в комментариях, это не всегда вариант (например, в неинтерактивном режиме). После этого я согласен, чтоping
«kludge», возможно, является следующим лучшим вариантом, поскольку он очень прост. Тем не менее, я предлагаю другой вариант ... вставлять некоторые VB Script .Основа этого решения имеет все виды применения помимо этого. Часто VBS может делать то, что не может делать пакет, или, по крайней мере, делать это намного проще. Используя технику, проиллюстрированную здесь, вы можете смешать их (не «бесшовно», а «функционально» ...)
Вот один вкладыш, чтобы создать временный скрипт, выполнить его, а затем удалить его. Скрипт спит за вас (в этом примере 3 секунды).
Вот в основном то же самое, написанное немного по-другому:
И вот наконец-то, вроде бы
ping
, уCScript
самого есть опция тайм-аута! Таким образом, если вы введете бесконечный цикл в сценарии, вы можете позволить интерпретатору принудительно установить продолжительность. Обратите внимание, что это «занятая» операция, которая потребляет ресурсы процессора, и поэтому я не рекомендую ее использовать, когда вы можете использоватьWScript.Sleep
процедуру, но я представляю ее как концептуальную опцию для полноты картины:источник