可能是因为用了 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 中完成文件关联操作¶
如上图所示,先在打开的 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¶
- 打开一个文件夹,依次打开菜单栏的工具(tools)——文件夹选项(folder options)
- 再在打开窗口上单击“文件类型”(file types),在“已注册的文件类型”(registered file types)中找到“M”文件类型,单击下面的“恢复”(Restore)。
- 这样就可以了,如果还不行,跳到下面的第三条。
二、Windows 7¶
- 打开 MATLAB 程序;
- 在 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 的用户权限不够(因为需要修改注册表),解决办法就是:
- 关闭当前 MATLAB;
- 在 MATLAB 图标上鼠标右键单击,选择“以管理员身份运行”;
- 重新执行前面的操作。
- 随便打开一个包含
.m
文件的文件夹; - 右键单击某个 .m 文件,选择 打开方式 ——> 选择默认程序(C);
- 在弹出的如下对话窗口中按照如图所示选择,并注意下面那个地方打上勾:
如果选的是旁边那个 MATLAB Starter,就会在双击打开
.m
文件的时候重新打开一个 MATLAB 程序;如果没有打勾,下次还需要再设置。
上面提到的 MATLAB 命令行在这里有提到,我就是参考的这里。
三、注意事项¶
但是,如果已经在matlab程序的File —— Preferences —— Editor/debugger中(如下图)设定了用别的编辑器打开,那么需要重新设定为“MATLAB Editor”才行。
四、推广¶
提到上面的情况要顺便说一句,这个 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 类型文件了。上面代码中的 % 后面的内容是注释。©
本文发表于水景一页。永久链接:<https://cnzhx.net/blog/reset-matlab-to-be-the-default-application-to-open-m-file/>。转载请保留此信息及相应链接。
感谢!