如何在Windows中将FIG文件关联Matlab,复用已有进程而非启动新副本?
必须可以啊!我之前被这个问题烦了好久,每次开几个FIG文件就占满内存,后来摸索出了两个靠谱的方法,亲测有效:
方法一:用VBS脚本调用已有Matlab实例(最可靠)
直接改Windows的文件关联还是会触发新的Matlab进程,所以得靠一个小脚本通过Matlab的自动化接口连接到正在运行的实例:
- 新建一个文本文件,命名为
OpenFigWithRunningMatlab.vbs,把下面的代码粘进去:Set Matlab = GetObject(, "Matlab.Application") If Err.Number <> 0 Then ' 没找到运行的Matlab,就启动一个新的 Set Matlab = CreateObject("Matlab.Application") Matlab.Visible = True End If Matlab.Execute "open('" & WScript.Arguments(0) & "')" - 把这个脚本存到一个固定的地方(比如Matlab安装目录里,不容易丢)
- 右键点击任意FIG文件,选「属性」→「更改」→「更多应用」→「在这台电脑上查找其他应用」,找到刚才的VBS脚本选中它
- 以后双击FIG文件,脚本会先查有没有正在跑的Matlab:有的话直接用它打开文件,没有才启动新进程,完美解决资源浪费的问题
方法二:给Matlab开个自动化服务器的“开关”(辅助优化)
为了让脚本调用更顺畅,我们可以让Matlab启动时自动开启自动化服务:
- 打开Matlab,点「主页」选项卡的「预设」
- 在预设窗口里找「常规」→「MATLAB启动」,勾选「启动时启用自动化服务器」
- 点「应用」「确定」,重启Matlab就生效了
小提示
- 如果你的Matlab版本比较老,可能得手动在命令行输入
enableservice('AutomationServer', true),然后保存预设,这样脚本才能顺利找到运行的实例 - 脚本里已经处理了带空格的文件路径,不用担心路径有空格出错的问题
内容的提问来源于stack exchange,提问作者Dims




