查看单个帖子
旧 2019-12-07, 23:17   #1
poster
高级会员
 
注册日期: 2019-11-21
帖子: 3,006
声望力: 66
poster 正向着好的方向发展
默认 在命令行脚本完成之前,如何停止MATLAB返回?

我在MATLAB帮助( matlab -h )中看到可以使用-r标志指定要运行的m文件。我注意到当我这样做时,MATLAB似乎启动了脚本,但立即返回。脚本运行正常,但是主应用程序已经返回。

有什么方法可以让MATLAB仅在命令完成后才返回?如果您是从一个单独的程序中调用它,似乎等待该过程要比使用文件或套接字来确认完成要容易得多。

为了说明,这是一个示例函数waitHello.m :

function waitHello disp('Waiting...'); pause(3); %pauses 3 seconds disp('Hello World'); quit; 我尝试使用以下命令运行它:

matlab -nosplash -nodesktop -r waitHello 回答:
快速回答:

matlab -wait -nosplash -nodesktop -r waitHello 在Matlab 7.1(我拥有的版本)中,matlab.bat中有未记录的命令行选项-wait。如果它不适用于您的版本,则可以将其添加。这就是我发现的。最终启动matlab的底部命令是(第153行):

start "MATLAB" %START_WAIT% "%MATLAB_BIN_DIR%\%MATLAB_ARCH%\matlab" %MATLAB_ARGS% 在这种情况下,启动命令的相关语法(请参阅cmd.exe中的“帮助启动”):

start ["window title"] [/wait] myprogram.exe args ... 我发现,在所有记录的命令行选项中,高一点(第60行):

) else if (%opt%) == (-wait) ( set START_WAIT=/wait ) else ( 因此,只要您还从脚本中退出matlab,指定-wait应该可以完成您想要的操作(否则它将等待您以交互方式终止它)。
poster 当前离线   回复时引用此帖