首页 > 解决方案 > 运行具有随机等待时间的程序

问题描述

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

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

标签: windowsbatch-filecommand-line

解决方案


您对问题的描述不清楚。它不工作”可能意味着任何事情。您发布的代码有效。并且完全按照您的要求执行:

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太多次(尤其是在低内存设备上),电脑可能会变得无响应。因此,请进行进程计数,并且仅在未满足进程数时才启动新实例:

: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

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


推荐阅读