Можно ли вставить временную паузу в пакетные файлы?

Можно ли вставить временную паузу в пакетные файлы?

Можно ли вставить временную паузу в пакетный файл DOS?

Она должна действовать так же, как команда «пауза», но вместо того, чтобы нажимать какую-либо клавишу, она продолжится сама по себе через X секунд.

решение1

Уродливое, но традиционное решение, которое я видел, когда вы не хотите устанавливать никакое стороннее программное обеспечение, — это использовать PING. Например:

@echo off
rem Sleep 5 seconds
ping -n 6 127.0.0.1>NUL

Число 6 необходимо, поскольку первый запрос возвращается почти сразу, примерно через «0» секунд, поэтому вам нужно отправить еще x + 1 запросов, чтобы получить желаемую задержку.

решение2

Предположим, что вы говорите не о пакетных файлах DOS, а о пакетных файлах Windows:

> timeout /?

ТАЙМ-АУТ[/T] тайм-аут [/NOBREAK]

Описание:

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

Список параметров:

/T        timeout       Specifies the number of seconds to wait.
                        Valid range is -1 to 99999 seconds.

/NOBREAK                Ignore key presses and wait specified time.

/?                      Displays this help message.

ПРИМЕЧАНИЕ: Атайм-аутзначение −1 означает бесконечное ожидание нажатия клавиши.

Примеры:

TIMEOUT /?
TIMEOUT /T 10
TIMEOUT /T 300 /NOBREAK
TIMEOUT /T -1

решение3

Если вы имеете в виду "пакетные" файлы. Встроенной команды нет; но в пакет ресурсов Win2003 включена программа, которая работает так же. Подробнее здесь:http://malektips.com/xp_dos_0002.html

решение4

Или вы можете сделать это следующим образом:

@echo off
rem Sleep 5 seconds
CALL :TIMEOUT 5
ECHO Do other stuff here

GOTO :END

:TIMEOUT
ping -n %~1 -w 1 127.0.0.1>nul
EXIT /B 0

:END
pause

Связанный контент