Windows批处理:睡眠

Windows批处理:睡眠,windows,shell,batch-file,scripting,Windows,Shell,Batch File,Scripting,如何让Windows批处理脚本等待几秒钟 sleep和wait似乎不起作用(无法识别的命令)。您可以尝试 ping -n XXX 127.0.0.1 >nul 其中XXX是等待的秒数加上一。我个人使用: 等待10秒钟。很可能您已经在开发机器上安装了Perl,作为git安装的一部分;如果不是,你将不得不安装它,例如,从或,但这是我安装的东西之一 或者,您可以从安装sleep命令。我不知道为什么这些命令对您不起作用,但您也可以尝试 超时 等待10秒: choice /T 10 /C X /D

如何让Windows批处理脚本等待几秒钟

sleep
wait
似乎不起作用(无法识别的命令)。

您可以尝试

ping -n XXX 127.0.0.1 >nul
其中XXX是等待的秒数加上一。

我个人使用:

等待10秒钟。很可能您已经在开发机器上安装了Perl,作为git安装的一部分;如果不是,你将不得不安装它,例如,从或,但这是我安装的东西之一


或者,您可以从安装sleep命令。

我不知道为什么这些命令对您不起作用,但您也可以尝试

超时
等待10秒:

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

嘿,窗户是嗯。。。有趣。这项工作:

choice /T 1 /d y > NUL
choice
会提示您是或否。
/dy
会让它选择是
/t1
使其在键入之前等待一秒钟
>NUL
压缩输出。

具有
睡眠
批处理文件。如果您升级到,您可以使用:

Start-Sleep -s <time to sleep>
启动睡眠-s
或者类似的

timeout /t 10 /nobreak > NUL
/t
以秒为单位指定等待时间

/nobreak
如果按某个键(CTRL-C除外),则不会中断超时


将抑制命令的输出

我刚刚编写了自己的sleep,名为。

对于纯cmd.exe脚本,您可以使用这段以百分之一秒为单位返回当前时间的代码

: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
信息

我依靠你。我有一个JScript文件,如下所示:

// This is sleep.js
WScript.Sleep( WScript.Arguments( 0 ) );
在批处理文件中运行它(通常是
%SystemRoot%\system32\cscript.exe


微软有一个睡眠功能,你可以直接调用

    Usage:  sleep      time-to-sleep-in-seconds
            sleep [-m] time-to-sleep-in-milliseconds
            sleep [-c] commited-memory ratio (1%-100%)
例如,您可以在批处理脚本中说sleep 1,以睡眠1秒

IMO Ping对于这个用例来说有点像黑客。

有一个小实用程序,名为。有了它,您可以在批处理和Windows注册表中执行任何程序的延迟启动(在…Windows/../Run registry中最有用)

用法示例:

delayexec "C:\WINDOWS\system32\notepad.exe" 10
或作为睡眠命令:

delayexec "nothing" 10


啊,这不是我安装的那些东西之一=P。我甚至不想安装“sleep.exe”实用程序,所以这有点多。Ruby也可以工作:
Ruby-e“sleep 10”
——它少了一个字符:)@Roy:实际上,perl可以不用分号。如果你可以用9秒而不是10秒,它甚至可以少两个字符:
perl-e“sleep 9”
:-)你也可以像这样使用PHP:PHP-r sleep(5);这是另一个解释器:
node-e“setTimeout(a=>{},500)”
我已经安装了普通的WindowsXP。我认为“睡眠”是你必须安装的一个附加功能<代码>超时
非常有效,谢谢!哦!我不知道超时。不幸的是,它在Windows 2000中不可用,尽管现在这可能不是问题。如果是,choice也可以在以前的版本上使用(即使在DOS中)。我没有使用这个命令-我只是在中找到它。您可能还想看看。这在Windows 7中工作。提供此技术的说明。请注意,
-n
用于指示请求的数量
ping
默认情况下,每个回复都会等待一秒钟,即使它在更短的时间内到达。记住,你需要在秒数上加上一秒,因为ping不会在第一个请求之前等待。哈哈,如此简单,但又如此天才:-)正是我想要的+1我能找到的唯一一件事是在普通XP上工作。当我需要一个脚本来自动释放计算机的IP地址,在重新配置交换机端口时等待几分钟,然后续订IP地址时,我使用这种方法遇到了一个有趣的问题。在交换机端口关闭的中间时刻,网络连接断开,ping出错并显示一条
硬件错误
消息,并在预期时间的一小部分内通过了假定为1秒长的ping。是的,但您需要一个询问是或否的窗口。在我的荷兰式窗口上,它询问Ja或Nee,所以,Y不起作用。这就是为什么我在上面的答案中指定了确切的选择。您只需添加/N即可防止显示提示。@GolezTrol:仍然需要“>NUL”来禁止显示“X”。啊,我没有意识到“/C”的重要性,我在网上找到的例子中有它。CHOICE命令在Windows XP上不起作用。我将把它与
>NUL
一起使用以抑制所有输出。哇,实际上,我在使用的xp安装上既没有超时,也没有选择。。。真奇怪。正在ping。CHOICE命令在Windows XP;上不起作用@PeterMortensen的
选项
适用于Windows XP,但默认情况下未安装。不过,它并没有在Windows 2003中引入,因为它存在于(95,98)的Windows中,甚至存在于MSDOS 6.0中。当他们将消费者版本与从Windows 2000开始的NT版本相结合时,他们可能只是忘记了这一点“C:\Documents and Settings\User>sleep‘sleep’不被识别为内部或外部命令、可操作程序或批处理文件。”Windows在这个用例中有点像黑客。。lolI可以在我的机器(windows 7)上使用“睡眠”。PowerShell还是普通cmd.exe?的确好球@randominaso!确认-这是一个powershell命令,不是普通的命令行(cmd.exe)该死的垃圾!我不知道这个在那里。因此,我们需要根据评级对这些答案进行排序。我差点错过了这个。这是我一直在寻找的东西,在任何地方都找不到+1超时命令在Windows XP;上不起作用。在我的XP机器上,我有它@PeterMortensen是否通过更新进入?@Heberda
/t
等待时间(以秒为单位),
/nobreak
不会中断超时,如果您按下按钮(除了
CTRL-C
    Usage:  sleep      time-to-sleep-in-seconds
            sleep [-m] time-to-sleep-in-milliseconds
            sleep [-c] commited-memory ratio (1%-100%)
delayexec "C:\WINDOWS\system32\notepad.exe" 10
delayexec "nothing" 10