确保应用程序在批处理文件中关闭

时间:2012-06-14 15:14:39

标签: batch-file video-processing

具体来说,我在批处理文件中使用DGIndex作为序列的一部分来进行一些视频编码。

尽管接受了CLI参数,但DGIndex会弹出一个窗口来进行处理。然后它会在完成后消失,但命令行会挂起,好像它仍然打开一样。该过程不再运行。

我是否有内置功能可以确保它不会挂起,或者是否有第三方代理实用程序会监视进程结束然后自行关闭?

3 个答案:

答案 0 :(得分:1)

批处理文件中的DGIndex存在相同的问题。我知道这是一个老问题,但是从那时起似乎没有对DGIndex进行过更新,因此这可能仍然有意义。

DGIndex具有2种不同的命令行“样式”,在本手册中,一种称为 legacy (一种使用大写字母作为设置),另一种称为 UNIX样式(小写字母)。

对我来说,UNIX风格的命令行的“ -exit”命令不起作用,因此即使正确完成了工作,该批处理文件也没有收到来自DGIndex的相应消息。我改用了 legacy 命令,问题就消失了。

“有趣”是Dan在 legacy 命令中遇到了问题,反之亦然。

问候,迈克。

答案 1 :(得分:0)

您可以使用以下内容:

@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,足够长的时间,如果程序仍在运行,则意味着它已崩溃,然后在延迟后关闭。

我很确定你无法判断程序是否已挂起(至少不是批处理)。如果它确实崩溃了,如果你需要再次运行它,至少可以确保它没有运行。

希望这有帮助!

答案 2 :(得分:0)

如果您使用start,批处理文件应该在启动dgindex应用程序后立即返回。

您可以将 /WAIT 标记传递给start,告诉它等待该进程退出,然后再转到批处理文件的下一行。< / p>

start /WAIT dgindex -BF=[vob.txt] -FO=0 -IA=2 -OM=2 -TN=0 -OF=[out] -HIDE -EXIT

我知道这已经老了,但是你有没有想到它?