Подтвердить что ты не робот

Как подождать в пакете script?

Я пытаюсь написать пакетный скрипт и пытаюсь подождать 10 секунд между двумя вызовами функций. Команда:

sleep 10

Не заставляет пакетный файл ждать 10 секунд.

Я использую Windows XP.

Примечание: это не полная копия Sleeping в командном файле, так как другой вопрос касается также и Python, в то время как речь идет о пакетных файлах Windows.

4b9b3361

Ответ 1

Вы можете выполнить ping адрес, который, безусловно, не существует, и указать желаемый тайм-аут:

ping 192.0.2.2 -n 1 -w 10000 > nul

И поскольку адрес не существует, он будет ждать 10 000 мс (10 секунд) и возвращается.

  • Часть -w 10000 указывает желаемый тайм-аут в миллисекундах.
  • Часть -n 1 сообщает ping, что он должен только один раз попробовать (обычно он будет пробовать 4 раза).
  • Часть > nul добавляется так, что команда ping не выводит ничего на экран.

Вы можете легко сделать команду сна, создав sleep.bat где-нибудь в вашей PATH и используя вышеописанную технику:

rem SLEEP.BAT - sleeps by the supplied number of seconds

@ping 192.0.2.2 -n 1 -w %1000 > nul

ПРИМЕЧАНИЕ. Адрес 192.0.2.x зарезервирован как RFC 3330, поэтому он определенно не будет существовать в реальном мире. Цитирование из спецификации:

192.0.2.0/24 - Этот блок назначается как "TEST-NET" для использования в документацию и пример кода. Он часто используется в сочетании с доменные имена example.com или example.net в поставщике и протоколе документация. Адреса внутри этого блока не должны отображаться на общедоступный Интернет.

Ответ 2

Лучше пинг 127.0.0.1. Windows ping приостанавливается в течение одной секунды между пинсами, поэтому если вы хотите спать в течение 10 секунд, используйте

ping -n 11 127.0.0.1 > nul

Таким образом, вам не нужно беспокоиться о неожиданных ранних возвращениях (скажем, нет маршрута по умолчанию, и 123.45.67.89 сразу становится недоступным.)

Ответ 3

Я действительно нашел нужную команду для использования.. ее вызванный таймаут: http://www.ss64.com/nt/timeout.html

Ответ 4

Я использовал этот

:top
cls
type G:\empty.txt
type I:\empty.txt
timeout /T 500
goto top

Ответ 5

Как насчет:

@echo off
set wait=%1
echo waiting %wait% s
echo wscript.sleep %wait%000 > wait.vbs
wscript.exe wait.vbs
del wait.vbs

Ответ 6

Ну, есть ли вообще sleep на вашем Windows XP? Согласно этому сообщению: http://malektips.com/xp_dos_0002.html Спящий sleep недоступен в Windows XP, и для его получения необходимо загрузить пакет ресурсов Windows 2003.

Ответ Чакрита дает вам еще один способ сделать паузу.

Попробуйте запустить sleep 10 из командной строки.