如何修改批处理文件,仅在iMacros脚本运行超2分钟时自动关闭?
解决iMacros脚本的批处理监控重启需求
我来帮你调整这个批处理脚本,完全贴合你要的逻辑——监控脚本运行时长,超过2分钟就停止重启循环,否则等60秒重新启动。
下面是修改后的完整代码:
@echo off setlocal enabledelayedexpansion :start :: 切换到脚本所在目录,确保路径正确 cd /d C:\filepath :: 启动iMacros脚本并等待它执行完成/失败退出 :: 注意:如果直接运行.iim文件有问题,换成iMacros主程序启动命令,比如: :: start /wait "" "C:\Program Files\iMacros\iMacros.exe" -macro "program.iim" start /wait "" "program.iim" :: 记录脚本启动和结束的时间,计算运行时长(转换为秒) set "start_time=%time%" for /f "tokens=1-4 delims=:. " %%a in ("%start_time%") do ( set /a "start_total=%%a*3600 + %%b*60 + %%c" ) for /f "tokens=1-4 delims=:. " %%a in ("%time%") do ( set /a "end_total=%%a*3600 + %%b*60 + %%c" ) :: 处理跨午夜的特殊情况(结束时间早于开始时间,说明过了0点) if !end_total! lss !start_total! ( set /a "end_total+=86400" ) set /a "run_duration=!end_total! - !start_total!" :: 核心判断逻辑:超过2分钟(120秒)则退出,否则等待60秒重启 if !run_duration! gtr 120 ( echo 脚本运行时长超过2分钟,判定为成功完成,批处理即将退出。 pause exit /b ) else ( echo 脚本运行时长为!run_duration!秒(未超过2分钟),将在60秒后重启... timeout /t 60 /nobreak >nul goto start )
关键逻辑说明:
setlocal enabledelayedexpansion:启用延迟变量扩展,确保在循环和条件判断里能实时读取变量的最新值,避免批处理的变量替换问题。start /wait:用这个命令启动脚本并等待它完全退出,这样我们才能准确获取脚本的运行起止时间。如果你的.iim文件需要通过iMacros主程序启动,记得替换成对应的启动命令(代码里有注释提示)。- 时间计算:把开始和结束时间都转换成当天的总秒数,还处理了跨午夜的情况(比如脚本在23:59启动,00:01结束),避免时长计算出错。
- 时长判断:如果脚本运行超过120秒(2分钟),就输出提示并退出批处理;否则等待60秒后跳回
start标签,重新启动脚本。
内容的提问来源于stack exchange,提问作者Shardinar
相关产品推荐
相关产品推荐

