是否可以在批处理文件中发出wait命令?

时间:2011-03-24 13:30:47

标签: c# iis-7 batch-file cmd

我有一个运行多个.cmd文件的批处理文件。我想知道是否可以在运行最后一个之前等待60秒左右。

由于

8 个答案:

答案 0 :(得分:4)

您可以使用timeout [seconds],即timeout 60

答案 1 :(得分:4)

另一个“解决方法”是使用choice命令,它在各种windows / dos操作系统上得到更好的支持:

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

会暂停10秒,而屏幕上什么都看不到。

答案 2 :(得分:2)

使用“睡眠”命令。您需要下载它(部分Windows资源工具包) More information here on sleep

答案 3 :(得分:1)

您可以使用Timeout

Syntax
  TIMEOUT [seconds]
来自Sleep

Windows Server 2003 Resource Kit Tools

Syntax
  SLEEP [seconds]

答案 4 :(得分:1)

PING 127.0.0.1 -n 61

它的作用是ping计算机本身,它会立即回复,ping之间的时间是1秒,第一次ping会立即进行,所以只需添加你想要的秒数+ 1作为ping的数量发送。在这种情况下,它将等待60秒。

答案 5 :(得分:1)

如果您更喜欢纯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

然后您可以使用它来构建这样的等待循环。

: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 SETHELP CALL信息。

答案 6 :(得分:0)

快速谷歌搜索提出了这个答案......

PING 1.1.1.1 -n 1 -w 30000> NUL

它会尝试ping,直到超时(30000ms)

答案 7 :(得分:0)

GREAT!所以这是一个正确的解决方案,finnaly。 只是一个细节,如果您在本地化操作系统上使用它,请确保您的“DELIMS”设置适合。 例如,使用“DELIMS =:”而不是“DELIMS =:”。为捷克本地化。