重设 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 的关联” 的评论

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>