重设 MATLAB 对 M-file 的关联

可能是因为用了 ghost 恢复 Windows xp 系统,或者别的什么原因,反正是双击打开 .m 文件时候,机器就打开 matlab 程序,而不是像以前那样在 matlab 程序的编辑器(matlab editor)里打开,这样是很不方便。更郁闷的是,如果本来已经打开了 matlab 程序,此时双击 .m 文件,会打开另一个 matlab 界面,相当的烦人。

今天在 Windows 7 中重新遭遇这样的问题,未曾想 Windows 7 把“恢复”文件类型关联这样的操作取消了。又费了一番力气才解决。顺便更新本文。

update 2013.03.13 此文所述方法在 Win7+MATLAB2012 环境下验证可用(感谢 @向稚 反馈)。

0、终极大法

注意:
嗯,真是不知道该说什么好了!才过了几天,什么也没干,今天发现 MATLAB 又可以正常打开了。下面的记录还是留着吧。2013.05.25
2013.05.23 更新此记录:
这个终极大法可能还需要进一步验证其安全性!如果不想惹麻烦,建议优先使用后面的方法。出现问题的情况可能如下所述。
我现在很少用 MATLAB。那天增加这个方法的时候自己尝试了一次,的确是能完成任务,但是也可能带来问题 —— 我的 MATLAB 打不开了。
之前曾讲过(本文后面),我这个系统安装之后并没有安装 MATLAB,而是直接将原先 XP 系统中的一个程序安装文件夹直接复制过来了(里面大多数都是可以不用安装就能直接运行的程序),试过之后发现 MATLAB 也不需要重新安装,于是使用至今。这样的情况下,使用 MATLAB 内置的修复功能(重新建立文件关联实质上就是修复)的时候,它可能将原来用于 XP 的注册表项写进 Windows 7 系统了,导致现在 MATLAB 双击运行之后只出现进程却不见界面。

不管你的 MATLAB 运行在哪个 Windows 版本之上,只要你的 MATLAB 可以正常运行,就可以通过其内部提供的帮助文档(help)来完成文件关联操作。帮助文档中提供了在 Windows 中完成 MATLAB 文件类型关联操作的批处理文档,单击相应链接即可启动运行相应的操作指令。后面的方法中也有提到该指令的代码版的。

首先,打开 MATLAB。

注意:因为更改文件关联需要修改 Windows 注册表(虽然是由 MATLAB 帮你完成的,但是 MATLAB 却是由你启动的,所以,你的用户权限需要足够来完成修改)。在 Windows 7 及以后版本中,可以在 MATLAB 图标上鼠标右键单击,选择“以管理员身份运行”来打开 MATLAB。

然后,打开 MATLAB Help (帮助文档)

方法有二:

  • 在 MATLAB 中输入 doc 然后回车运行。
  • 在 MATLAB 工具栏中依次单击“Help”——>”Product Help“。

MATLAB Help 窗口如下图所示。

最后,在 Help 中完成文件关联操作

MATLAB 帮助文档中的 Windows 系统文件关联操作指南

MATLAB 帮助文档中的 Windows 系统文件关联操作指南

如上图所示,先在打开的 Help 中左上角的搜索框(图中 1 号位置)中输入,

Change Windows File Associations

并按回车键开始搜索。在搜索结果中(图中已有搜索结果),单击左侧窗格中的“Utility to Change File Associations for Windows Platforms”(图中 2 号位置,一般是第一条搜索结果),即可在右侧窗格里看到具体内容。

图中 3 号位置就是 MATLAB 提供的一些文件关联操作快捷方式,鼠标单击一条即可自动执行(在 MATLAB 中有返回结果):

  • Run utility to associate files with .fig extension with MATLAB —— 运行工具以关联 .fig 扩展名到 MATLAB
  • Run utility to associate files with .m extension with MATLAB —— .m 扩展名
  • Run utility to associate files with .mat extension with MATLAB —— .mat 扩展名
  • Run utility to associate files with .mdl extension with MATLAB —— .mdl 扩展名
  • Run utility to associate MATLAB with MEX-files —— MEX 文件
  • Run utility to associate MATLAB with P-files —— P 文件
  • Run utility to associate MATLAB with all of these file types: FIG, M, MAT, MDL, MEX, and P —— 一次性完成上面的 6 个操作

返回结果如果是类似于,

Changed Windows file associations. FIG, M, MAT, MDL, MEX, and P files are now associated with MATLAB.

说明顺利完成了任务。

返回结果如果是,

??? Error using ==> fileassoc
No permissions to modify the registry.

说明运行 MATLAB 的用户不够权限,或者没有使用“以管理员身份运行”。

这应该算是终极大法了吧?!

一、Windows XP

  1. 打开一个文件夹,依次打开菜单栏的工具(tools)——文件夹选项(folder options)
  2. 再在打开窗口上单击“文件类型”(file types),在“已注册的文件类型”(registered file types)中找到“M”文件类型,单击下面的“恢复”(Restore)。
  3. 这样就可以了,如果还不行,跳到下面的第三条

二、Windows 7

  1. 打开 MATLAB 程序;
  2. 在 MATLAB 的命令行窗口运行以下命令(复制粘贴进去即可):
    commandwindow; 
    cwd=pwd; 
    cd([matlabroot '\toolbox\matlab\winfun\private']); fileassoc('add','.m') ;
    cd(cwd); 
    disp('Changed Windows file association. M-files are now associated with MATLAB. Congratulations!')

    如果在这里运行之时报错,如下,

    ??? Error using ==> fileassoc
    No permissions to modify the registry.

    说明运行 MATLAB 的用户权限不够(因为需要修改注册表),解决办法就是:

    1. 关闭当前 MATLAB;
    2. 在 MATLAB 图标上鼠标右键单击,选择“以管理员身份运行”;
    3. 重新执行前面的操作。
  3. 随便打开一个包含 .m 文件的文件夹;
  4. 右键单击某个 .m 文件,选择 打开方式 ——> 选择默认程序(C);
  5. 在弹出的如下对话窗口中按照如图所示选择,并注意下面那个地方打上勾:

    选择 M-file 的关联程序为 MATLAB

    如果选的是旁边那个 MATLAB Starter,就会在双击打开 .m 文件的时候重新打开一个 MATLAB 程序;如果没有打勾,下次还需要再设置。

上面提到的 MATLAB 命令行在这里有提到,我就是参考的这里。

三、注意事项

但是,如果已经在matlab程序的File —— Preferences —— Editor/debugger中(如下图)设定了用别的编辑器打开,那么需要重新设定为“MATLAB Editor”才行。

MATLAB 编辑器设定

四、推广

提到上面的情况要顺便说一句,这个 MATLAB 的软件运行模式真是好啊:重装系统或者将安装后的 MATLAB 文件夹换个电脑,甚至可以从 XP 跳到 Win 7,不需要重新安装 MATLAB 就可以直接使用。当然问题就是文件关联的事情可能需要重做,这个上面已经解释过了。

我从 XP 迁移到 Windows 7 的时候直接复制文件夹过来都能运行,不需要重新安装;然后换了台电脑(T420s),Windows 7 改成 64 位版本了,又是直接复制文件夹,照样能运行。不过,问题就是会遇到上面提到的麻烦。好在现在已经不是麻烦了,估计将来的 Windows 8 也可以这么办(上面第二个方法即可)。

另外,关联的文件类型也可以囊括所有的 MATLAB 专用文件类型。参照上面 Windows 7 中的方法,将 MATLAB 中的运行代码改为,

commandwindow;
cwd=pwd;
cd([matlabroot '\toolbox\matlab\winfun\private']);
fileassoc('add',{'.m','.mat','.fig','.p','.mdl',['.' mexext]}); % 重点,增加了多种文件类型
cd(cwd);
disp('Changed Windows file associations. FIG, M, MAT, MDL, MEX, and P files are now associated with MATLAB.')

这样就可以关联多种 MATLAB 类型文件了。上面代码中的 % 后面的内容是注释。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/reset-matlab-to-be-the-default-application-to-open-m-file/>。转载请保留此信息及相应链接。

1 条关于 “重设 MATLAB 对 M-file 的关联” 的评论

时间过去太久,评论已关闭。
如果您有话要说,请到讨论区留言并给出此文章链接。
谢谢您的理解 :-)