it-swarm-ru.tech

Лучший способ подождать несколько секунд в файле bat?

Возможный дубликат:
Как спать в пакетном файле?

Вот как это можно сделать на секунду в пакетном файле:

PING 400.500.600.700 > NUL

Я гуглил, но я не уверен, что есть лучшие ... какие-нибудь идеи? :)

12
Srekel

Вы можете использовать опции "default default" и "timeout" встроенной команды выбора, чтобы создать задержку.

@echo off
echo Hi, I'm doing some stuff
echo OK, now I need to take a breather for 5 seconds...
choice /d y /t 5 > nul
echo Times up! Here I go again...
11
ThatGraemeGuy

Правильный способ сделать это - использовать команду timeout , представленную в Windows 2000.

Ждать 30 секунд:

timeout /t 30

Тайм-аут будет прерван, если пользователь нажмет любую клавишу; однако команда также принимает необязательный параметр /nobreak, которая фактически игнорирует все, что пользователь может нажать, кроме явного CTRL-C:

timeout /t 30 /nobreak

Кроме того, если вы не хотите, чтобы команда выводила на экран свой обратный отсчет, вы можете перенаправить ее вывод на NUL:

timeout /t 30 /nobreak > NUL
29
Massimo
@echo off
echo It is time for liftoff.
timeout /t 5
echo Commencing crash sequence.
timeout /t 5

Нажатие на клавишу перевернет обратный отсчет - единственный недостаток.

4
Aaron Lewis

Вот что я использовал вместо sleep.exe,

@ping -n 1 -w 1000 0.0.0.1 > NUL  

Правка -n x ждать (примерно) x секунд.

3
nray

Очевидно в наборе ресурсов Windows есть команда sleep. Другое Сайты также рекомендуем использовать выбор .....

2
James

Команда CHOICE с таймером работает хорошо ...

CHOICE/C: x/T: x, 10> NUL

Есть также "программы", которые вы можете запускать как WAIT, SLEEP и т.д.

Надеюсь это поможет.

1
KPWINC

Пинг (выше) - хороший, но работает только при подключении к сети.

Немного скрипта, который будет задерживать, ниже:


@ эхо выключено

set/a secondsend =% TIME: ~ 6,2% + 10

if% secondsend% GTR 59 set/a secondsend = secondsend-60

:жди здесь

если% TIME: ~ 6,2% NEQ% секундная отправка%


Это будет делать паузу между 9-10 секундами (первая секунда не точна из-за использования команды TIME - и это может быть в середине секунды, прежде чем вы начнете).

Если работает, установив 'secondsend' в текущую секунду часов ПК, то добавив к нему 10 (задержка). Если оно больше 59, снимите 60, так как оно будет перенесено на следующую минуту. Затем есть цикл, который проверяет текущую секунду с помощью secondsend - как только они совпадают, сценарий продолжается.

Если вы хотите отложить на другой период 2-59, то измените 10 во второй строке (я говорю 2-59, так как первая секунда может не быть полной секундой, так что 2 может быть, скажем, 1,2 секунды, например).

Извините, что это так длинно, но я решил объяснить, как работает рутина.

1
Mark H