Можно ли выполнить команду ожидания в командном файле? - PullRequest
3 голосов
/ 24 марта 2011

У меня есть командный файл, который запускает несколько файлов .cmd. Я хотел бы знать, можно ли подождать 60 секунд или около того, прежде чем запускать последний.

Спасибо

Ответы [ 8 ]

4 голосов
/ 24 марта 2011

Еще один «обходной путь» - использование команды choice, которая лучше поддерживается в различных ОС Windows / DOS:

choice /c a /t 10 /d a > nul

вызовет паузу в 10 секунд, при этом ничего не будет виднона экране.

4 голосов
/ 24 марта 2011

вы можете использовать timeout [seconds], т. Е. timeout 60

2 голосов
/ 24 марта 2011

используйте команду «Сон».Вам необходимо скачать его (часть комплектов ресурсов Windows) Более подробная информация здесь о сне

1 голос
/ 24 марта 2011

Если вы предпочитаете чистый сценарий cmd, используйте следующие фрагменты кода.

Сначала этот фрагмент возвращает текущее время в сотнях секунд.

:gettime
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
set cc=%time:~-2%
set /A %1=hh*360000+mm*6000+ss*100+cc
goto :eof

Затем вы можете использовать его для создания цикла ожидания, подобного этому.и, наконец, собрав все части вместе, вы получите этот пример использования

@echo off
setlocal enableextensions enabledelayedexpansion

call :gettime t1
echo %t1%
call :wait %1
call :gettime t2
echo %t2%
set /A tt = (t2-t1)/100
echo %tt%
goto :eof

:wait
call :gettime wait0
:w2
call :gettime wait1
set /A waitt = wait1-wait0
if !waitt! lss %1 goto :w2
goto :eof

:gettime 
set hh=%time:~0,2%
set mm=%time:~3,2%
set ss=%time:~6,2%
set cc=%time:~-2%
set /A %1=hh*360000+mm*6000+ss*100+cc
goto :eof

Для более подробного описания команд, используемых здесь, проверьте информацию HELP SET и HELP CALL

1 голос
/ 24 марта 2011

PING 127.0.0.1 -n 61

То, что это делает, пингует сам компьютер, он всегда отвечает мгновенно, и время между пингами составляет 1 секунду, а первый пинг проходит мгновенно, поэтому просто добавьте, сколько секунд выхочу + 1 в качестве количества пингов для отправки.В этом случае он будет ждать 60 секунд.

1 голос
/ 24 марта 2011

Вы можете использовать Тайм-аут

Syntax
  TIMEOUT [seconds]

или Спящий режим из Инструментов Windows Server 2003 Resource Kit

Syntax
  SLEEP [seconds]
0 голосов
/ 14 августа 2013

ВЕЛИКИЙ! Так что это правильное решение, в конце концов. Просто деталь, если вы используете его в локализованной ОС, убедитесь, что ваш параметр "DELIMS" подходит Например, используйте «DELIMS = :,» вместо «DELIMS = :.» для чешской локализации.

0 голосов
/ 24 марта 2011

Быстрый поиск в Google дал этот ответ ...

PING 1.1.1.1 -n 1 -w 30000> NUL

Он будет пытаться пинговать до истечения времени ожидания (30000 мс)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...