MATLAB系统命令“按回车键退出”

5
我正在尝试编写一个MATLAB脚本,该脚本将调用并运行外部程序,然后继续执行其他MATLAB命令。
tic                       %Start stopwatch
system('MyProgram.exe')   %Call and run my program
toc                       %End stopwatch 

然而,这个程序 "MyProgram.exe" 要求我 "按 Enter 键退出"。如何让我的 MATLAB 脚本传递 "Enter" 并继续执行?例如,在执行结束时,如何将 "Enter" 作为我的程序的输入传递?或者一般来说应该如何操作?

它可能只需要将第二个返回值传递给系统调用:system('Myprog.exe\n') - Brydon Gibson
在按下“Enter”之前,它不会移动到下一行。MATLAB如何传递此“Enter”,以便脚本可以在没有用户干预的情况下继续执行? - ASE
2
在Unix上,您可以使用system('MyProgram < /dev/null')。在Windows上,我猜您应该能够使用system('MyProgram.exe < NUL'),但是目前我无法测试它。 - m7913d
4
如果你的程序是基于命令行而非图形界面的,那么你可以使用 echo.|MyProgram.exe 进行操作。注意不要改变原意,尽量让翻译通俗易懂。 - SomethingDark
非常感谢 m7913d 和 SomethingDark。两个解决方案都有效。 - ASE
2个回答

6
在UNIX系统中,您可以使用以下命令:
system('MyProgram < /dev/null'). 

Matlab文档所建议:

为禁用标准输入和类型前置重定向,需要在调用命令时包含格式化文本< /dev/null

Windows的等效方式如下(基于此帖子):
system('MyProgram.exe < NUL')

4

当控制台程序需要从用户那里仅获取一次输入且没有内置的方法(例如将其作为参数传递),则可以使用echo并将其管道化到程序中。这也可以用于通过管道输送空行来按Enter键(再次,仅一次)。

echo.|program.exe

传统上,使用命令echo.可以通过echo生成一个空白行,但如果当前目录中包含没有扩展名的名为echo的文件,则此方法可能失败。为了避免这种情况,您可以使用(代替.

echo(|program.exe

我记得Dostips线程讨论了替代echo.的方法,最终发现有一种情况echo/无法工作。 - SomethingDark
是的,如果任何回显文本以 ? 开头,echo/ 将失败;我相信这是唯一的错误情况... - aschipfl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接