Назад | Перейти на главную страницу

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

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

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

Предполагая, что вы говорите не о пакетных файлах 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.

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

Примеры:

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

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

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

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

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

Или вы можете сделать это так:

@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