在Matlab中保存当前正在运行的脚本

在Matlab中保存当前正在运行的脚本,matlab,scripting,save,Matlab,Scripting,Save,有没有办法在Matlab中保存当前正在运行的脚本?我有一个脚本,它会自动备份一组脚本,尽管如果我更改了当前脚本,那么保存的版本将过期 也许可以调用一些java 谢谢好的,我在这里写的所有东西都是从中学到的,特别是通过研究他的。。。好东西 我假设Itamar Katz正确理解您,并且您正在使用“计算单元”或“计算选择”从编辑器运行未保存的代码;您希望代码意识到它没有保存,并将编辑器中当前显示的版本保存到其他位置 我还没有找到将文件直接保存到原始位置的方法,但至少我找到了访问当前文本的方法。然后可以

有没有办法在Matlab中保存当前正在运行的脚本?我有一个脚本,它会自动备份一组脚本,尽管如果我更改了当前脚本,那么保存的版本将过期

也许可以调用一些java


谢谢

好的,我在这里写的所有东西都是从中学到的,特别是通过研究他的。。。好东西

我假设Itamar Katz正确理解您,并且您正在使用“计算单元”或“计算选择”从编辑器运行未保存的代码;您希望代码意识到它没有保存,并将编辑器中当前显示的版本保存到其他位置

我还没有找到将文件直接保存到原始位置的方法,但至少我找到了访问当前文本的方法。然后可以使用fprintf将其保存到任何需要的位置。我已经在Matlab7.11(R2010b)中对此进行了测试;如果您有一个不同的版本,您需要深入研究EditorMacro.m以找到Matlab6的正确代码

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条件检查当前活动的编辑器窗口是否包含未保存的文件(“dirty”);如果是,我们需要检索代码的当前版本(到变量thisdocument_text中),并将该字符串保存到某个文件中


这有帮助吗?

在Yair Altman的网站上的某个地方(参见我另一个答案中的链接),他也提到了,这是MATLAB R2009b引入的

editorservices.getActive().save

应该做你想做的。

你的意思是备份脚本也应该备份自己吗?是的,在某种程度上,我有一个主脚本,它设置了许多参数,然后调用一个函数来备份整个脚本集。我仍然不确定我是否100%理解你。您是通过将参数保存为mat文件进行备份,还是将脚本本身保存为m文件进行备份?是否将副本保存在单独的文件夹/标签中?为什么保存的版本已过期?举个例子会有所帮助。我单独保存m文件,然后将参数单独保存在mat文件中。我知道这有点复杂。我保存了整个脚本集,以便以后可以再次运行它们,而无需进行太多更改。有时我会忘记在设置当前参数的脚本上单击“保存”,因此复制到磁盘上的文件不包含正确的内容。如果我能从脚本中保存它,保存的副本总是正确的。好了,现在它更清晰了。这意味着您并不总是通过在命令行中键入脚本名称来运行脚本,而是通过“计算单元格”按钮来运行脚本,对吗?否则,您将运行保存的文件,而不是编辑的文件。我决定保留此答案,即使我现在有一个更好的答案,因为它们是不相关的,而此答案暗示了更深层次的方法来搞乱MATLAB内部。这是“undocumented”的答案,而另一个使用的是被称为“semi undocumented”的东西……太好了,我甚至可以通过查看IsDirty字段判断文件是否被修改。谢谢