【发布时间】:2011-03-24 13:30:46
【问题描述】:
我有一个运行多个 .cmd 文件的批处理文件。我想知道在运行最后一个之前是否可以让它等待 60 秒左右。
谢谢
【问题讨论】:
-
^ 可能与有太多时间的人重复
标签: c# iis-7 batch-file cmd
我有一个运行多个 .cmd 文件的批处理文件。我想知道在运行最后一个之前是否可以让它等待 60 秒左右。
谢谢
【问题讨论】:
标签: c# iis-7 batch-file cmd
您可以使用timeout [seconds],即timeout 60
【讨论】:
另一个“解决方法”是使用choice 命令,该命令在各种 windows/dos OS-es 上得到更好的支持:
choice /c a /t 10 /d a > nul
将导致 10 秒的暂停,而屏幕上什么也看不到。
【讨论】:
使用“睡眠”命令。您需要下载它(Windows 资源包的一部分) More information here on sleep
【讨论】:
PING 127.0.0.1 -n 61
它的作用是 ping 计算机本身,它总是会立即回复,ping 之间的时间是 1 秒,并且第一次 ping 会立即进行,所以只需将您想要的秒数 + 1 作为 ping 数添加到发送。在这种情况下,它将等待 60 秒。
【讨论】:
您可以使用Timeout
Syntax
TIMEOUT [seconds]
或Sleep 来自Windows Server 2003 Resource Kit Tools
Syntax
SLEEP [seconds]
【讨论】:
如果您更喜欢纯 cmd 脚本,请使用以下代码。
首先,这个 sn-p 以百秒为单位返回当前时间。
: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 信息。
【讨论】:
快速谷歌搜索得出了这个答案......
PING 1.1.1.1 -n 1 -w 30000 >NUL
它会尝试 ping 直到超时(30000 毫秒)
【讨论】:
太棒了!所以这是正确的解决方案,最后。 只是一个细节,如果您在本地化操作系统上使用它,请确保您的“DELIMS”设置适合。 例如,使用“DELIMS=:”而不是“DELIMS=:”。用于捷克本地化。
【讨论】: