Пакет Windows: сон

Как мне получить пакет Windows script, чтобы подождать несколько секунд?

sleep и wait, похоже, не работают (непризнанная команда).

Ответ 1

Вы можете попробовать

ping -n XXX 127.0.0.1 >nul

где XXX - это количество секунд ожидания, плюс один.

Ответ 2

Я не знаю, почему эти команды не работают для вас, но вы также можете попробовать timeout

timeout <delay in seconds>

Ответ 3

timeout /t 10 /nobreak > NUL

/t указывает время ожидания в секундах

/nobreak не будет прерывать таймаут, если вы нажмете кнопку (кроме CTRL-C)

> NUL будет подавлять вывод команды

Ответ 4

Ожидание 10 секунд:

choice /T 10 /C X /D X /N

Ответ 5

У Microsoft есть функция сна, которую вы можете вызвать напрямую.

    Usage:  sleep      time-to-sleep-in-seconds
            sleep [-m] time-to-sleep-in-milliseconds
            sleep [-c] commited-memory ratio (1%-100%)

Вы можете просто сказать sleep 1, например, чтобы спать в течение 1 секунды в вашей партии script.

IMO Ping немного взломан для этого варианта использования.

Ответ 6

Для чистого cmd.exe script вы можете использовать этот фрагмент кода, который возвращает текущее время в hundreths секунд.

: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

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

:wait
call :gettime wait0
:w2
call :gettime wait1
set /A waitt = wait1-wait0
if !waitt! lss %1 goto :w2
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 информацию.

Ответ 7

Windows 2003 Resource Kit имеет командный файл sleep. Если вы когда-нибудь переместитесь на PowerShell, вы можете использовать:

Start-Sleep -s <time to sleep>

Или что-то в этом роде.

Ответ 8

Я полагаюсь на JScript. У меня есть JScript файл:

// This is sleep.js
WScript.Sleep( WScript.Arguments( 0 ) );

И внутри командного файла я запускаю его с CScript (обычно это %SystemRoot%\system32\cscript.exe)

rem This is the calling inside a BAT file to wait for 5 seconds
cscript /nologo sleep.js 5000

Ответ 9

Хех, Windows - это... интересно. Это работает:

choice /T 1 /d y > NUL

choice представляет приглашение с просьбой о да или нет. /d y позволяет выбрать да. /t 1 заставляет его ждать секунду, прежде чем вводить его. > NUL выдает кавычки.

Ответ 11

Лично я использую Perl one-liner:

perl -e "sleep 10;"

для 10-секундного ожидания. Скорее всего, вы уже установили Perl на машине разработки как часть вашей установки git; если нет, вам придется установить его, например, из ActiveState или Strawberry, но это одна из тех вещей, которые я устанавливаю в любом случае.

В качестве альтернативы вы можете установить команду сна из GnuWin32.

Ответ 12

RJLsoftware имеет небольшую утилиту под названием DelayExec.exe. С этим вы можете выполнить отложенное начало любой программы в пакетах и ​​в реестре Windows (наиболее полезно в... Windows/.../Запустить реестр).

Пример использования:

delayexec "C:\WINDOWS\system32\notepad.exe" 10

или как команда спящего режима:

delayexec "nothing" 10