具体来说,我在批处理文件中使用 DGIndex 作为序列的一部分来进行一些视频编码。
尽管接受 CLI 参数,但 DGIndex 会弹出一个窗口来进行处理。完成后它会消失,但命令行会挂起,就好像它仍然打开一样。该进程不再运行。
是否有内置的东西可以确保它不会挂起,或者是否有第三方代理实用程序可以监视进程结束然后自行关闭?
具体来说,我在批处理文件中使用 DGIndex 作为序列的一部分来进行一些视频编码。
尽管接受 CLI 参数,但 DGIndex 会弹出一个窗口来进行处理。完成后它会消失,但命令行会挂起,就好像它仍然打开一样。该进程不再运行。
是否有内置的东西可以确保它不会挂起,或者是否有第三方代理实用程序可以监视进程结束然后自行关闭?
我在批处理文件中遇到了与 DGIndex 相同的问题。我知道这是一个老问题,但似乎 DGIndex 从那时起就没有更新过,所以这可能仍然是相关的。
DGIndex 有 2 种不同的命令行“样式”,在手册中称为legacy(一种使用大写字母进行设置),另一种UNIX 样式(小写字母)。
对我来说,UNIX 风格命令行的“-exit”命令不起作用,因此批处理文件没有收到来自 DGIndex 的相应消息,即使它正确完成了它的工作。我改用旧版命令,问题就消失了。
“有趣”的是 Dan 对遗留命令有问题,所以反过来。
问候,迈克。
如果使用start
,批处理文件应在启动 dgindex 应用程序后立即返回。
您可以将/WAIT
标志传递start
给它,告诉它等到进程退出后再移动到批处理文件的下一行。
start /WAIT dgindex -BF=[vob.txt] -FO=0 -IA=2 -OM=2 -TN=0 -OF=[out] -HIDE -EXIT
我知道这是旧的,但你有没有弄明白?
你可以使用这样的东西:
@echo off
echo Running program
start dgindex -BF=[vob.txt] -FO=0 -IA=2 -OM=2 -TN=0 -OF=[out] -HIDE -EXIT
ping 127.0.0.1 -n 10
taskkill /im dgindex.exe /f
exit >nul
这个批处理文件基本上运行 DGIndex 程序,然后在尝试关闭程序之前暂停 10 秒。只需将 10 替换为您选择的延迟,足够长的时间,如果程序仍在运行,则意味着它已崩溃,然后它将在延迟后关闭。
我很确定您无法判断程序是否已挂起(至少无论如何都不是批量)。如果它确实崩溃了,如果您需要再次运行它,这至少可以确保它没有运行。
希望这可以帮助!