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

Как я могу спать в пакетном файле Windows в неинтерактивном сеансе?

У меня есть пакетный сценарий, который выполняется вне интерактивной командной строки. Я хочу поспать 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"

Не мое решение, я только что нашел: