【问题标题】:Make batch file closes only IF a program is running longer than a certain duration仅当程序运行时间超过特定持续时间时才关闭批处理文件
【发布时间】:2018-05-24 12:22:42
【问题描述】:

我制作了一个批处理文件,它会在脚本关闭时重新启动它。该脚本运行 2 分钟或 15 分钟。如果脚本在 2 分钟后没有关闭,我想让批处理文件自行关闭,这意味着它已经成功运行并且不再需要批处理文件。换句话说:

  1. 批处理文件运行脚本
  2. 批处理文件等待脚本在 2 分钟前关闭
  3. 60 秒后重新启动脚本
  4. 如果脚本运行时间超过 2 分钟,批处理文件将退出并且脚本 永远不会再重新启动。

我的问题是:如果脚本运行超过 2 分钟,我如何编辑代码以使批处理文件关闭?

注意:我在这里谈论的是 iMacros 脚本。如果失败/完成,它们会自动关闭,因此无需终止进程。文件扩展名:.iim

这是我当前的代码:

 @echo off
:start
set /a var+=1
if %var% EQU 10000 goto end
:: 
TIMEOUT /T 60
cd C:\filepath
program.iim
goto start

:end
echo var has reached %var%.
pause
exit

【问题讨论】:

  • 很好。你的问题是什么?阅读tour 并在此处了解How to Ask
  • 我编辑了帖子以包含所需的信息。抱歉,这是我第一次在这里发帖。
  • 你怎么知道“脚本”(program.iim)已经停止了?文件是写入还是删除?您需要跟踪流程吗?
  • 批处理文件在启动脚本时会自动暂停运行并等待它关闭,然后循环回到 60 秒倒计时以再次启动
  • @Shardinar - 脚本启动后,program.iim,有一个goto start。批处理文件以什么方式等待program.iim关闭?

标签: batch-file cmd imacros


【解决方案1】:

我不会浏览你的脚本的其余部分,所以只会显示你要求的内容,也就是说,如果我正确理解了这个问题。您基本上想检查program.iim 是否仍在运行,您想退出批处理脚本。如果是这样,那么这可能会有所帮助:

title myscript
timeout /t 120 >nul
tasklist /FI "IMAGENAME eq program.iim" |findstr program.iim
if "%errorlevel%"=="0" taskkill /fi "WINDOWTITLE eq myscript"

所以发生的情况是,我们将批处理文件的标题设置为 myscript,然后执行 2 分钟的超时检查任务 program.iim 是否正在运行(也就是说,如果这实际上创建了这个名称的图像)和通过使用findstr,如果图像仍在运行,我们只需通过它的标题名终止批处理文件。

然后你可以添加另一行:

if "%errorlevel%"=="1" goto :start

如果在您检查它时它还没有运行,它将让您重新启动 program.iim。请注意,title myscript 最好位于脚本的顶部。

【讨论】:

    【解决方案2】:

    这未经测试,但看起来它可能会满足您的需求。我没有 iMacros。如果它不起作用,我很抱歉。

    iMacros.exe 程序在 while 循环开始之前运行一次,因为我的猜测是您不想等待 60 秒等待第一次启动。将此代码放入名为 timesp.ps1(或以 .ps1 结尾的其他名称)的文件中。

    $starttime = Get-Date
    Start-Process -FilePath iMacros.exe -ArgumentList "program.iim" -Wait
    
    while ((New-TimeSpan -Start $starttime).TotalMinutes < 2) {
        Start-Sleep -Seconds 60
        $starttime = Get-Date
        Start-Process -FilePath iMacros.exe -ArgumentList "program.iim" -Wait
    }
    

    使用以下命令运行此脚本:

    powershell -NoProfile -File timesp.ps1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多