如何在命令行中运行Matlab并将结果打印到命令行?

7
我想在Windows的DOS终端上运行一个脚本,脚本会在终端上显示“Hello World”,例如我从以下命令执行:
matlab.exe -nosplash -nodesktop -nojvm -wait -r printToCommandLine.m
其中printToCommandLine.m的内容如下:
system(sprintf('echo Hello world'));
但是它只能在执行脚本时生成的Matlab命令窗口中打印出来。

2
我认为这种行为在Windows上不受支持。请参考此处 - AnonSubmitter85
哎呀..有没有办法通知命令行呢? 我基本上有一个非常长的Matlab脚本,我想要在某个特定的进程完成时显示,例如“进程A已完成...” - kkawabat
备选方案1:安装Linux。备选方案2:使用Octave。很抱歉我没有更好的消息告诉你。 - Cris Luengo
@AnonSubmitter85 我想在 Matlab 文件的中间打印一个字符串,因为它是一个脚本,但脚本内有多个部分。我可以将这些过程分成不同的脚本并进行包装,但对于我的情况来说这会很困难。 - kkawabat
这个问题已经在Matlab Central上得到了回答: https://www.mathworks.com/matlabcentral/answers/102082-how-do-i-call-matlab-from-the-dos-prompt - Kardi Teknomo
显示剩余3条评论
1个回答

2

首先,我不确定语法是否已更改,但我必须在没有文件扩展名“.m”的情况下调用脚本:

matlab.exe -nosplash -nodesktop -nojvm -wait -r printToCommandLine

否则我将在MATLAB中遇到错误。
其次,这只是一个解决方法,但您可以使用以下命令将当前的命令行输出打印到日志文件中,例如“log.txt”。
matlab.exe -nosplash -nodesktop -nojvm -wait -logfile "log.txt" -r printToCommandLine

日志文件将在运行时更新。为了测试这一点,我创建了一个小的示例脚本,并查看了'log.txt'在执行过程中如何更改:

disp('Script execution started. Waiting 10 seconds...')
pause(10)
disp('...waited 10 seconds.');

这不完全是您想要的,但它给您一个机会,在执行过程中获得有关当前命令行输出的实际信息(以文本文件形式)。我们将其用于自动化(远程)测试,以在测试通过后将MATLAB命令行输出打印到控制台上。
type log.txt

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