当计算完成后,如何关闭DOS程序?

当计算完成后,如何关闭DOS程序?

我在使用批处理文件或仅使用 dos() 函数在 matlab 中运行程序时遇到问题。我现在可以使用以下命令打开程序并使用输入运行它:

启动程序.exe输入.mdu

但是当计算完成时,它不会自行关闭。我尝试过 taskkill、taskkill 与 /wait、close、quit、end、done 等的组合。我对此完全没有经验,也找不到有关此问题的任何信息。当我尝试不同的命令时,我要么根本无法让它关闭,要么它在计算完成之前就关闭了。

我可以通过使用 taskkill 让它在 cmd 中运行。然后它会等待直到程序完成,但是当我将它放入批处理文件或 Matlab 中的 dos 函数中时,问题就开始出现。

答案1

您是否尝试过使用!program.exe input.mdu?这应该在 program.exe 运行后将控制权返回给 Matlab。请参阅感叹号部分help punct

编辑:如果程序不退出,这将无济于事。

答案2

如果您在不使用start命令(创建新窗口)的情况下启动程序,如下所示:

program.exe input.mdu

您可以按 来终止它CTRL+BREAK

如果您必须使用start来运行程序 - 您应该在程序窗口获得焦点时按下该组合键。

来自 MSDN (关联):

CTRL+C 和 CTRL+BREAK 组合键由控制台进程进行特殊处理。默认情况下,当控制台窗口具有键盘焦点时,CTRL+C 或 CTRL+BREAK 被视为信号(SIGINT 或 SIGBREAK),而不是键盘输入。默认情况下,这些信号会传递给连接到控制台的所有控制台进程。(...) CTRL+BREAK 始终被视为信号,但应用程序可以更改默认的 CTRL+C 行为(...)

答案3

使用批处理文件可以很容易地终止一个进程,但是 DOS(或者更可能是 Windows 命令会话,它是不是DOS 中的用户如何知道 MATLAB 何时完成计算?您可以让 MATLAB 在计算完成时写入文件并将其用作信号。但我认为您的做法完全错误。

MATLAB 知道什么时候完成,对吧?而且你必须有某种类型的 MATLAB 脚本来运行你的计算。MATLAB 有一个EXIT 命令

因此只需将 EXIT 命令合并到您的 MATLAB 脚本中。

答案4

好的,感谢您花时间解决我的问题,但我现在认为没有真正的解决方案。我给程序制作者发了一封邮件,要求他们提供一些可以在模拟后自动关闭的功能。他们现在正在帮我做这件事。所以无论如何,谢谢你们!

相关内容