我正在从Windows命令提示符中运行MATLAB脚本:
"C:Program FilesMATLABR2014Bbinmatlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
test.m很简单:
function test
disp('Hello!');
输出显示在MATLAB命令窗口中。有什么办法可以将输出强制输出到Windows提示?
从命令行调用MATLAB(或任何其他外壳或批次(例如CMD或BAT)脚本)时,请使用命令行选项-log
。
它没有记录到MATLAB 2017b,但起作用。
旁注:-nodisplay
在Windows版本的MATLAB中不支持,但是如果要防止其显示图形,请改用-noFigureWindows
。
自R2019b以来,有一个新的命令行选项-batch
,它将输出重定向到命令行并处理其他内容以进行批处理处理。请参阅Windows的文档。
matlab -batch "statement to run"
这将启动MATLAB,而无需桌面或Splash屏幕,将所有输出记录到stdout
和stderr
,在语句完成后自动退出,并提供退出代码报告成功或错误。
我不知道在Windows中使用MATLAB在DOS窗口中实际运行的方法,这是您需要写出显示的内容。(仅供参考:您可以在Linux中 - 但我认为您需要在Windows中运行)。
对于在MATLAB中运行,您可以想到2个替代方案:
-
-logfile文件启动时,它将将所有输出记录到您指定的文件 - 但是,将文件写入磁盘的方式以及何时由Matlab控制,我没有测试以查看 - 如果您的代码不使用't要做很多事情,只能写在matlab出口上。
-
您的matlab命令中的日记文件,即
-r "diary FILE.TXT; test.m; diary OFF"
-这与上述类似 - 但使用diary
函数。
但是,如果您可以运行代码编译(我知道这很大,因为您可能没有编译器,或者您定期更新test.m
,这是很大的最有效的...
从DOS提示符中运行编译代码时,所有终端消息都写入DOS提示符。我建议这是否合适的一件事是从安装目录中删除"splash.png"
文件,以避免从DOS运行时显示溅起屏幕。
我找到了一个解决方案:
https://www.mathworks.com/matlabcentral/answers/91607-how-can-can-i-----------------------------------8-r2009a-i#wonse_100958
我将在这里复制它,以方便起见。首先,我需要修改MATLAB脚本以输出到文本文件:
function test
fid=fopen('output.txt','w');
fprintf(fid,'Hello!');
fclose(fid);
然后,我应该使用一个附加命令的BAT文件运行MATLAB,以显示output.txt的内容:
"C:Program FilesMATLABR2014Bbinmatlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
type output.txt
type
命令将在命令窗口中显示" output.txt"的内容。因此,@matlabgui的答案几乎在那里。谢谢。
这不是一个非常优雅的解决方案,但可以使用。