Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何在每次迭代之间有延迟的循环中执行cmd文件?_Windows_Batch File_Cmd - Fatal编程技术网

Windows 如何在每次迭代之间有延迟的循环中执行cmd文件?

Windows 如何在每次迭代之间有延迟的循环中执行cmd文件?,windows,batch-file,cmd,Windows,Batch File,Cmd,我有一个cmd文件“D:\ProgramFiles\test.cmd” 我想写一个脚本,在循环中执行test.cmd n次,并且在每次执行之后,我希望延迟/超时5秒 我该怎么做呢?For循环就是你想要的。在本例中,我们告诉它以1开始计数,步数为1,以5结束,这意味着您将运行5个循环。有关For的详细信息,请从cmd.exe运行For/? 超时,取决于您的操作系统版本。较旧的操作系统没有它,那么可以查看名为sleep的较旧版本,或者使用命令ping,计算您想要的超时值+1超时在某些Windows版

我有一个cmd文件“D:\ProgramFiles\test.cmd”

我想写一个脚本,在循环中执行test.cmd n次,并且在每次执行之后,我希望延迟/超时5秒


我该怎么做呢?

For循环就是你想要的。在本例中,我们告诉它以1开始计数,步数为1,以5结束,这意味着您将运行5个循环。有关
For
的详细信息,请从cmd.exe运行
For/?

超时,取决于您的操作系统版本。较旧的操作系统没有它,那么可以查看名为
sleep
的较旧版本,或者使用命令
ping
,计算您想要的超时值+1<代码>超时在某些Windows版本上,您不喜欢
/t
,因此可以在没有它的情况下使用。i、 e
超时5

@echo off
for %%i in (1,1,5) do (
    echo We do something here..
    timeout /t 5
)
要了解Windows cmd/batch命令以及如何在批处理文件中使用这些命令,可以打开
cmd
并键入
help
,其中将列出命令的加载。然后,每个命令都可以运行,然后是
/?
开关,以获得每个命令的完整帮助。

示例(n=200):


timeout
命令并非始终可用。例如,在Jenkins之类的生成服务器上执行批处理文件时,或在旧版本的Windows上运行时。但是,有一种方法始终有效:

@ECHO OFF
FOR %%i IN (1,1,5) do (
    CALL "D:\ProgramFiles\test.cmd"
    ping 127.255.255.255 -n 1 -w 5000> nul
)
这里我们使用ping命令<代码>ping 127.255.255.255-n1-w5000>nul将ping IP地址127.255.255.255。无法访问此地址,但
-w 5000
将使命令“等待”5000ms=5s以获得响应。唯一的限制是,你不能用这种方法低于500毫秒。任何低于500的数字都将导致500毫秒的延迟

您也可以使用
ping-n6localhost>nul
。这将重复ping六次。请注意,您需要重复6次才能获得5秒的延迟,因为第一次ping将立即启动,因此6次ping意味着5秒的延迟。不要成为名人的牺牲品“


有关更多信息,请访问网站。

查看
For/L
timeout
命令。不知道,但与另一个+1答案相比,它缺少一些解释。你应该
调用D:/ProgramFiles/test.cmd
(在循环结束后用另一行
echo进行测试。
(有和没有
调用
)看看原因)我没有否决,但我不明白你所说的“我喜欢短词”是什么意思。
ping 127.0.0.1-n1-w5000
不会造成任何延迟,因为
127.0.0.1
总是立即响应ping,所以
-w
的超时量没有任何影响。为此,您必须使用一个永远不会响应ping的ip地址,然后您可以使用带有
-w
的任何数字进行延迟。您可以使用永远不会响应的环回广播地址<代码>127.255.255.255
@ECHO OFF
FOR %%i IN (1,1,5) do (
    CALL "D:\ProgramFiles\test.cmd"
    ping 127.255.255.255 -n 1 -w 5000> nul
)