У меня есть пакетный сценарий, который выполняется вне интерактивной командной строки. Я хочу поспать 30 секунд между двумя командами в нем?
Я читал некоторые ответы на похожие вопросы, которые вы можете использовать timeout
или choice
, но они не работают в неинтерактивном сеансе.
ERROR: Input redirection is not supported, exiting the process immediately.
Я читал в других ответах на похожие вопросы, которые вы можете использовать waitfor
, но это установит уровень ошибок, и я полагаюсь на них в общем сценарии.
Я видел, как пинг не удался ping -n 1 -w 30000 192.168.not.reachable > NUL
и это, похоже, работает, но это кажется неправильным, и я не могу полагаться на то, что один IP-адрес недоступен во всех системах, в которых я буду развертывать.
Есть ли другой способ попробовать?
Спасибо.
РЕДАКТИРОВАТЬ:
Этот ответ (Как спать в батнике?) определенно содержит соответствующий материал, но не учитывает необходимость решения, которое работает вне интерактивной оболочки. В нем упоминается единственная альтернатива, которая у меня есть сейчас: ping
, но, как я прошу выше, я ищу альтернативы.
Также спасибо за предложения PowerShell, но сейчас это невозможно.
Из http://www.robvanderwoude.com/wait.php
Скрипты не для DOS
Используйте функцию SysSleep всякий раз, когда вам нужна временная задержка в скриптах Rexx. SysSleep доступен в (родном) модуле RexxUtil OS / 2 и в модуле RegUtil Патрика Макфи для 32-битной Windows.
Используйте команду Sleep для задержки времени в скриптах KiXtart.
Используйте WScript.Sleep с последующей задержкой в миллисекундах в VBScript и JScript (к сожалению, этот метод недоступен в HTA).
Следующий пакетный код использует временный файл VBScript для создания точной задержки:
@ECHO OFF
REM %1 is the number of seconds for the delay, as specified on the command line
> "%Temp%.\sleep.vbs" ECHO WScript.Sleep %~1 * 1000
>> CSCRIPT //NoLogo "%Temp%.\sleep.vbs"
>> DEL "%Temp%.\sleep.vbs"
Не мое решение, я только что нашел: