Поиск…


Вступление

Эта тема научит вас одной из многих полезных вещей, которые нужно знать на языке сценариев, пакетном файле; Добавление задержки / паузы / таймаута в пакетный файл.

Тайм-аут


Тайм - аут

Самый простой способ сделать задержку или паузу в течение определенного времени - это стандартная команда TIMEOUT . Чтобы сделать тайм-аут, который длится ровно одну минуту, мы вводим:

timeout /t 60

Теперь, что здесь происходит?

Сначала мы используем команду TIMEOUT с параметром /T (что просто означает таймаут), тогда мы укажем количество секунд ожидания. В этом случае ... 60 секунд.

Таймаут с параметром / NOBREAK

Если мы возьмем пример из предыдущей и запустим это в файле BATCH: timeout /t 60 то, ожидая этих 60 секунд, вы действительно можете сломать таймаут, нажав любую клавишу на клавиатуре. Чтобы этого избежать, мы просто добавляем параметр /NOBREAK в конец.

timeout /t 60 /nobreak

Делая это, он будет тайм-аут в течение 60 секунд, и если вы хотите сломать таймаут, вам придется нажать (CTRL-C) на клавиатуре.

Тихий таймаут

Когда он сделает таймаут, он отобразит:

Waiting for X seconds, press a key to continue ...
or 
Waiting for X seconds, press CTRL+C to quit ... [This is with the /NOBREAK parameter]

Чтобы скрыть сообщение, используйте аргумент NUL (для объяснения NUL : Нажмите здесь )

timeout /t 60 > nul
or
timeout /t 60 /nobreak > nul

Пауза

Чтобы сделать паузу в сценарии, просто используйте команду PAUSE .

PAUSE

Это отобразит текст. Press any key to continue . . . , затем добавьте новую строку для ввода пользователем.

Предположим, мы хотим создать программу «Hello World», и после того, как мы нажмем что-то на нашей клавиатуре, мы хотим, чтобы она вышла из программы с помощью команды EXIT .

echo Hello World
pause
exit

Здесь он использует команду ECHO чтобы сказать «Hello World». Затем мы используем команду PAUSE которая отображает. Press any key to continue . . . и затем мы используем команду EXIT для завершения текущего скрипта BATCH.

Когда он приостанавливается, он отобразит:

Press any key to continue . . .

Скрыть клавишу «Нажмите любую клавишу, чтобы продолжить ...»

Чтобы скрыть сообщение, мы перенаправляем вывод на специальное устройство с именем nul . На самом деле это не реальное устройство, но все, что мы отправляем на него, выбрасывается.

pause > nul

пинг


пинг

Одной из наиболее часто используемых команд для задержки на определенное время является ping .

Основное использование

PING -n 1 -w 1000 1.1.1.1

REM the -n 1 flag means to send 1 ping request.
REM the -w 1000 means when the IP(1.1.1.1) does not respond, go to the next command
REM 1.1.1.1 is an non-existing IP so the -w flag can ping a delay and go to next command

Это выведет на ваш командный файл / консоль следующее:

C:\Foo\Bar\Baz>ping -n -w 1000 1.1.1.1

Pinging 1.1.1.1 (Using 32 bytes of data)
Request timed out

Ping statistics for 1.1.1.1
    Packets: Sent = 2,Received = 0, Lost = 1(100% loss)

Скрыть текст, отозванный

Просто добавьте >nul в конце команды, чтобы перенаправить его на нуль.

ping -n w 1000 1.1.1.1 >nul

Это ничего не выдаст.

Спать


Спать

В старой системе Windows timeout недоступен. Однако мы можем использовать команду sleep .

использование

sleep 1

Очень понятно; спать в течение 1 секунды. Однако sleep является командой с отсрочкой и должен быть заменен таймаутом .

Доступность

Эта команда доступна в старой системе Windows. Также SLEEP.exe включен в 2003 Resource Kit.

Чтобы использовать sleep.exe , поместите исполняемый файл в папку %Windir%\System32 . Затем вы можете использовать его как обычную команду.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow