我制作了一个批处理文件,它在关闭时重启脚本。脚本运行2分钟或15分钟。如果脚本在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
答案 0 :(得分:0)
我不打算完成你脚本的其余部分,因此只显示你要求的内容,即如果我正确理解了这个问题。您基本上想要检查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
,我们只需通过它的titlename来终止批处理文件。
然后你可以添加另一行:
if "%errorlevel%"=="1" goto :start
如果您在检查时未运行,则可以重新启动program.iim
。请注意,title myscript
应该最好位于脚本的顶部。
答案 1 :(得分:0)
这没有经过测试,但看起来它可能会做你想要的。我没有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