
Можно ли вставить временную паузу в пакетный файл 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