我需要在批处理文件中创建一个延迟,该延迟在两个给定的数字之间变化

时间:2016-05-16 14:21:32

标签: windows batch-file

我正在创建一个批处理文件,它打开另一个程序然后等待并关闭以前打开的程序。 问题是,批处理文件每次打开时都需要等待不同的时间。 e.g。

start "Your_Program_here"
timeout 20
taskkill /f /im "Your_Program_here"

上面的示例有效,但每次都有相同的延迟。 我怎样才能让它变化?

3 个答案:

答案 0 :(得分:1)

您是否需要等待第一个过程完成执行?或者只是一个简单的thread.sleep,因为你想要它?

如果是这样的话,我已经成功使用了一个使用自我ping的技巧

 ping 127.0.0.1 -n 10 > nul

-n旁边的数字是您要等待的秒数。

答案 1 :(得分:1)

使用%RANDOM%

start "Your_Program_here" timeout %random% taskkill /f /im "Your_Program_here"
  

%RANDOM%生成0到32,767(含)的随机整数

     

0≤%RANDOM%≤32767

您还可以通过将%RANDOM%乘以(或除以)另一个数字来缩放此范围以满足您的需求。

source

答案 2 :(得分:1)

你需要创建运行程序然后在d / t时间内关闭的算法

并且在此代码中,您必须创建一个包含要打开的文件的文件.name it“file.lst”

@echo off
setlocal
set f=0
set s=0
set d=0
for /f "tokens=*" %%a in ('type file.LST') do (set /a f=f+1 &&::%%a)
:s
set /a d=d+3 &::you can replace 3 as any number that you wanna to be rate
for /f "tokens=*" %%b in (file.LST) do (if not "%f%"=="%s%" (
start "" %%b 
set /a s=s+1
timeout %f%
taskkill /im %%b /f
)
)
goto s

感谢#naty