运行具有随机等待时间的程序

时间:2018-08-17 07:20:35

标签: windows batch-file command-line

我正在尝试创建一个批处理文件以随机运行程序,但是如何使批处理文件工作不起作用?

Intersect

1 个答案:

答案 0 :(得分:1)

您对问题的描述不清楚。 它不起作用” 可以表示任何意思。 您发布的代码有效。并完全按照您的要求进行操作:

set /a timeout=%RANDOM% * 21 / 32768 + 20
timeout %timeout%
notepad.exe

但是,根据您的评论,“该脚本仅每20秒运行一次,程序应该在任何时候随机执行一次”。我假设您想循环代码,如下所示:

:loop
set /a timeout=%RANDOM% * 21 / 32768 + 20
timeout %timeout%
notepad.exe
goto :loop

但这很危险,如果您打开notepad的次数过多(尤其是在低内存设备上),则PC可能会变得无响应。因此,请进行一个进程计数并仅在不满足进程数量的情况下才启动新实例:

:loop
set /a timeout=%RANDOM% * 21 / 32768 + 20 & timeout %timeout%
for /f "tokens=1,*" %%i in ('tasklist ^| find /I /C "notepad.exe"') do set var=%%i
if %var% LSS 10 start notepad.exe
goto :loop

该示例将无限循环,但仅在运行10个或更少的实例时才开始notepad.exe。这意味着最多允许10个记事本会话。 LSS之后的数字可以增加/减少。