我正在创建一个批处理文件,它打开另一个程序然后等待并关闭以前打开的程序。 问题是,批处理文件每次打开时都需要等待不同的时间。 e.g。
start "Your_Program_here"
timeout 20
taskkill /f /im "Your_Program_here"
上面的示例有效,但每次都有相同的延迟。 我怎样才能让它变化?
答案 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