有没有办法在Matlab中保存当前运行的脚本?我有一个脚本自动备份一组脚本,但如果我更改了当前脚本,则保存的版本将过时。
也许可以调用一些java?
由于
答案 0 :(得分:3)
在Yair Altman网站的某个地方(参见我的其他答案中的链接),他还提到了a blog entry about editorservices,它是在MATLAB R2009b中引入的。
editorservices.getActive().save
应该做你想做的事。
答案 1 :(得分:0)
好的,我在这里写的所有内容都是从undocumentedmatlab.com Yair Altman开始学习的,特别是通过查看他的EditorMacro.m ......很棒的东西!
我假设Itamar Katz正确地理解了您,并且您使用“评估单元格”或“评估选择”从编辑器运行未保存的代码;您希望您的代码意识到它没有保存,并将当前显示在编辑器中的版本保存到其他位置。
我还没有找到将文件直接保存到原始位置的方法,但至少我找到了访问当前文本的方法。然后,您可以使用fprintf将其保存到任何您想要的位置。我在Matlab 7.11(R2010b)中对此进行了测试;如果你有不同的版本,你需要深入了解EditorMacro.m以找到Matlab 6的正确代码。
if com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor.isDirty
thisdocument=com.mathworks.mlservices.MLEditorServices.getEditorApplication.getActiveEditor.getDocument;
thisdocument_text=char(thisdocument.getText(0,thisdocument.getLength));
fid = fopen('backupfile.m','w');
fprintf(fid, '%s', thisdocument_text);
fclose(fid);
else
% saved file is unmodified in editor - no need to play tricks...
...
end
因此if条件检查当前活动的编辑器窗口是否包含未保存的文件(“脏”);如果是,我们需要检索当前版本的代码(进入变量thisdocument_text)并将此字符串保存到某个文件中。
这有帮助吗?