Как заставить пакетный файл ждать / спать в течение нескольких секунд?


57

Я использую командный файл, чтобы запустить несколько программ, которые мне нужны в фоновом режиме. До сих пор я использовал команду pause для ее выполнения после завершения некоторых других запусков. Я бы предпочел использовать команды wait или sleep, но они, похоже, не включены в Windows 7.

Кто-нибудь знает, как вернуть эти команды, или другой метод, который достигает тех же результатов?


1
Или вы можете использовать powershell: stackoverflow.com/questions/1741490/…
Berzemus

Жаль, что sleep.exe был предоставлен MS по умолчанию с 2017 года в папке system32 или в файлах программы / любом стандартном месте. Простой c exe 40k или около того!
tgkprog

Как этот sleepcmd.com
tgkprog

Ответы:


30

Есть много утилит сна вы можете скачать и падение в папку System32, один снабжен Windows Server 2003 Resource Kit называется sleep.exe.

Вы также можете использовать трюк пинг:

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

затем откуда-то в вашем командном файле вы можете назвать это так:

CALL :sleep 1

1
трюк с пингом можно было бы использовать в качестве температурного решения, но я бы предпочел тот, который просто приостановил процесс, а не заставлял его выполнять напряженную работу на время. Кроме того, какой из пунктов в этом списке вы связали, что я искал?
Cegorach

Вы хотите sleep.exe
Джон Т

я попробовал CALL: сон 1 из тестового пакетного файла, и он ответил: «Система не может найти указанную метку пакета - SLEEP»
Cegorach

потому что вам нужно добавить подпрограмму, которую я разместил выше. Call просто вызывает подпрограмму, то есть 3 строки, которые я разместил над командой call.
Джон Т

126

Вы можете использовать timeoutкоманду:

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

Например, подождать 10 секунд:

TIMEOUT /T 10

Больше подробностей:

TIMEOUT /?

1
почему это не выбран в качестве правильного ответа? если вы спросите меня, текущая будет
слишком полезна

7
@Dany: потому что тема с 2009 года, когда большинство установок были XP. До Vista Timeout был только в серверных выпусках и в Resource Kit, а не в обычной установке XP. В настоящее время, действительно, правильный ответ - Timeout.
Mivk

6
@DanyKhalife Если вы не хотите запустить процесс в фоновом режиме. «ОШИБКА: перенаправление ввода не поддерживается, выход из процесса немедленно.»
Аннан


6

Существует также

waitfor SomethingThatIsNeverHappening /t 10

Который будет ждать от 1 до 99999 секунд.



-1

Если у вас установлен Python (и вы добавили путь установки в переменную окружения), вы можете разрешить Python выполнять спящий режим примерно так:

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

(Если у вас Windows Vista или выше, timeoutестественно, это путь.)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.