这不太容易被 Google 找到,并且除了prog.exe -params
在批处理文件中多次写入(显然只能按照我写入的次数起作用)之外,我想不出如何重复执行此操作。
我正在运行的 CLI 程序有时会崩溃。我不想每次崩溃时都手动重新启动它。
答案1
也许只需在批处理中写入一次命令,然后将批处理文件添加到批处理本身(因此它循环)...
就像是:
蝙蝠侠:
@echo off
Prog.exe -params
Go.bat
Ctrl-C
当您想要中断批处理循环时点击。
答案2
:main
@start /wait prog.exe -params
goto :main
答案3
我最终还是决定使用 C,因为我遇到了批处理文件打开无限实例的问题 :/
对于任何感兴趣的人,这里有一个用 C 语言编写的非常简单的替代方案:
int main(){
while (1){
system("C:\\path\\to\\prog.exe -params \"param vars\"");
}
}
默认情况下,system()
要求命令或进程在执行下一行之前完成或返回(如果您不想要这种行为,请&
在末尾添加) - 这正是我们在本例中想要的。
如果prog.exe
关闭,我们查看 C 的下一行,由于这是一个无限while
循环,因此重新打开该程序。
答案4
如果程序因崩溃而关闭,您可以检测它是否正在运行。
(您可以检查它是否正在运行,并在需要时运行它 - 您可以间隔循环检查)
https://stackoverflow.com/questions/162291/how-to-check-if-a-process-is-running-via-a-batch-script
如果程序在崩溃时没有关闭:除了编写自定义程序来执行此操作外,您还可以使用具有图像识别功能的宏记录器在识别到您指定的事件时执行您想要的任何操作。
但是,如果您想在此过程运行时积极地操作机器,这会变得很复杂。您不妨为其创建一个快速启动快捷方式,每次崩溃时手动单击一次。如果您不在现场并且想确保它在您不在时重新运行,其他选项就很好了。