我从Windows命令提示符下运行MATLAB脚本:力Matlab的输出到命令行
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
的test.m很简单:
function test
disp('Hello!');
输出显示在MATLAB命令窗口。有什么办法可以强制输出到Windows提示符?
我从Windows命令提示符下运行MATLAB脚本:力Matlab的输出到命令行
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
的test.m很简单:
function test
disp('Hello!');
输出显示在MATLAB命令窗口。有什么办法可以强制输出到Windows提示符?
我已经找到了解决的:
我会在这里复制它的便利。 首先,我需要修改MATLAB脚本输出到一个文本文件:
:function test
fid=fopen('output.txt','w');
fprintf(fid,'Hello!');
fclose(fid);
那我应该用一个bat文件有一个附加的命令显示output.txt中的内容运行了Matlab
"C:\Program Files\MATLAB\R2014B\bin\matlab" -nodisplay -nosplash -nodesktop -wait -r "test.m"
type output.txt
type
命令将在命令窗口中显示'output.txt'的内容。所以@matlabgui的回答几乎就在那里。谢谢。
这不是一个非常优雅的解决方案,但它的工作原理。
我不知道如何在Windows中执行此操作,以便让Matlab实际在DOS窗口中运行,而这正是您需要将显示器写入其中的操作。 (仅供参考:您可以在LINUX中 - 但我假设您需要在Windows中运行)。
对于在Matlab中运行,你有2个方案,我能想到的:在启动,将记录所有输出到您指定的文件
-logfile文件 - 然而,当文件被写入到如何和磁盘是由Matlab控制的,我还没有测试过 - 如果你的代码没有做太多,它可能只写在Matlab出口。
日志文件在Matlab命令中,即-r "diary FILE.TXT; test.m; diary OFF"
- 这与上面类似 - 但使用了diary
函数。
但是你可以得到你想要的东西如果你可以运行你的代码编译(我知道那是一个很大的,如果因为你可能没有编译器 - 或者如果你经常要更新test.m
这不是最高效...
当您从DOS提示符运行编译代码时,所有的终端消息都被写入到DOS提示符下。我建议的一个事情是,如果这样做合适的话,就是从安装目录中删除"splash.png"
文件避免在DOS下运行时启动画面(可能不需要)。
从命令行(或任何其他shell或批处理(例如,cmd或bat)脚本)调用Matlab时,使用命令行选项-log
。
它没有记录为Matlab 2017b,但它的工作原理。
备注:在Matlab的Windows版本中不支持-nodisplay
,但如果您想阻止它显示数字,请改为使用-noFigureWindows
。
这并不是您寻找的答案,但您可以使用'system'命令调用'echo',但是需要您修改m文件。 – Danny
@Danny。感谢您的评论。是的,它不会帮助,因为'system'的输出也会转到命令窗口,而不是windows命令提示符。 – Anton