Як змусити пакетний файл чекати / спати кілька секунд?


57

Я використовую пакетний файл для запуску декількох програм, які мені потрібні для запуску у фоновому режимі. До цього часу я використовував команду паузи, щоб виконати її після завершення деяких інших запусків. Я вважаю за краще використовувати команди очікування або сну, але вони, схоже, не включаються до 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

тому що вам потрібно додати підпрограму, яку я розмістив вище. Виклик просто викликає підпрограму, яка є 3 рядками, які я розмістив над командою виклику.
Джон Т

126

Ви можете використовувати timeoutкоманду:

Ця утиліта приймає параметр тайм-ауту, щоб чекати визначеного періоду часу (у секундах) або, поки не буде натиснута будь-яка клавіша. Він також приймає параметр для ігнорування натискання клавіші.

Наприклад, почекати 10 секунд:

TIMEOUT /T 10

Детальніше:

TIMEOUT /?

1
чому це не обрано як правильну відповідь? нинішній вигаданий, якщо ви запитаєте мене
Dany Khalife

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.