1. 将下面代码复制保存为 associateFiles.m 文件。

  2. 在MATLAB中运行 associateFiles.m 文件,即在命令行中输入 associateFiles 然后 回车。

  3. 步骤2程序运行生成文件 MatlabFileAssocFix.reg 。

  4. 关闭MATLAB,双击运行 MatlabFileAssocFix.reg 。

  5. 设置.m文件默认打开程序为MATLAB2016a 完工。

function associateFiles(action, userExtList, fileStr)% associateFiles(action, extList, fileStr)
%
% Makes a registry files that can be used to set correct file associantions on
% a windows platform. The following MATLAB file extensions are supported:
% .m, .mat, .fig, .mexw32, .mexw64, .p, .mdl, .mdlp, .slx, .mldatx, .req,
% .sldd, .slddc, .slxp, .sltx, .mn, .mu, .muphlp, .xvc, .xvz, .ssc, .mlapp,
% .mlappinstall, .mltbx, .mlpkginstall, .mlprj
%
% INPUT:
% action  - optional string.
%           * 'add' (default) adds/rewrites the MATLAB file association registry
%              keys for this version.
%           * 'delete' deletes the MATLAB file association registry entries for
%              ALL versions of MATLAB (including "old style" ones)
%           * 'deleteadd' is the same as 'delete' followed by 'add'
% extList - optional string or cell array of strings containing the file
%           extensions that should be associated with this version. Default is
%           all MATLAB file extension (see above).
% fileStr - optional string with the name of the registry file to be written
%           (possibly including path). Default is the file
%           'MatlabFileAssocFix.reg' in the current directory.
%
% USAGE:
% 1) Run with desired options (see above). A registry file should have been
%    created.
% 2) Exit all running instances of MATLAB.
% 3) Make a backup copy of the windows registry if you need to restore the
%    changes, see https://support.microsoft.com/en-us/kb/322756
% 4) Double click on the created file (possibly need to enter a password) and
%    confirm.
% 5) Restart Windows (or explorer.exe).
% 6) The MATLAB files should now be associated with the MATLAB version that the
%    registry file was created in and e.g. m-files should be opened in an
%    already running instance of MATLAB.
%
% EXAMPLES:
% * associateFiles('deleteadd') - Makes a registry files that deletes all
%   previous MATLAB file association registry keys and write new ones that
%   associates all MATLAB files with the MATLAB version that the registry file
%   was created in.
% * associateFiles('', {'.m', '.mat', '.fig'}, 'myFile') - Makes a registry file
%   "myFile.reg" that associates m-, mat- and fig-files with the MATLAB version
%   that the registry file was created in.
%
% VERSION 1.0% Defualt input
if (nargin < 1 || isempty(action))action      = 'add';
end
if (nargin < 2)userExtList = {};
end
if (nargin < 3)fileStr = '';
end
if (~iscell(userExtList))if (isempty(userExtList))userExtList = {};elseuserExtList = {userExtList};end
end% Sanity check
if (~ischar(action) || (~strcmpi(action, 'add') && ...~strcmpi(action, 'delete') && ~strcmpi(action, 'deleteadd')))error('The action to perform must be ''add'', ''delete'' or ''deleteadd''!')
end
if (~isempty(userExtList) && ~min(cellfun(@ischar, userExtList)))error('The file extension list must be a string or a cell array of strings!')
end
if (~ischar(fileStr))error('The file to write to must be a string!')
end% Get the currently running MATLAB version
verStr = regexp(version, '(\d*?\.\d*?\.\d*?)\.', 'tokens');
verStr = verStr{1}{1};
verNum = str2double(regexprep(verStr, '(\d*?\.\d*)[\x0000-\xffff]*', '$1'));
verHex = sprintf('x', str2double(regexprep(verStr, ...'(\d*?)\.[\x0000-\xffff]*', '$1')), str2double(regexprep(verStr, ...'\d*?\.(\d*?)\.[\x0000-\xffff]*', '$1')));% Get 32/64-bit
arch = computer;
switch archcase 'PCWIN'binFolder = 'win32';case 'PCWIN64'binFolder = 'win64';
end
binPath = fullfile(matlabroot, 'bin', binFolder);% Known MATLAB files with possible DDE actions
fileExtCell = {...'fig' ,   'MATLAB Figure'              , '-62'                       , ...{'Open', 'uiopen(''%1'',1)'}           , []                          ; ...'m'     , 'MATLAB Code'                , '-58'                       , ...{'Open', 'uiopen(''%1'',1)'}           , {'Run', 'run(''%1'')'}      ; ...'mat'   , 'MATLAB Data'                , '-59'                       , ...{'Load', 'load(''%1'')'    }           , {'Open', 'uiimport(''%1'')'}; ...'mdl'   , 'Simulink Model'             , '-61'                       , ...{'Load', 'uiopen(''%1'',1)'}           , []                          ; ...'mdlp'  , 'Simulink Protected Model'   , '-72'                       , ...[]                                     , []                          ; ...'mexw32', 'MATLAB MEX'                 , '-63'                       , ...[]                                     , []                          ; ...'mexw64', 'MATLAB MEX'                 , '-63'                       , ...[]                                     , []                          ; ...'mn'    , 'MuPAD Notebook'             , '-66'                       , ...{'Open', 'mupad(''%1'')'}              , []                          ; ...'mu'    , 'MuPAD Code'                 , '-67'                       , ...{'Open', 'uiopen(''%1'',1)'}           , []                          ; ...'muphlp', 'MuPAD Help'                 , '-68'                       , ...{'Open', 'doc(symengine, ''%1'')'}     , []                          ; ...'p'     , 'MATLAB P-code'              , '-60'                       , ...[]                                     , []                          ; ...'slx'   , 'Simulink Model (SLX format)', '-73'                       , ...{'Open', 'uiopen(''%1'',1)'}           , []                          ; ...'ssc'   , 'Simscape Model'             , '-65'                       , ...{'Open', 'uiopen(''%1'',1)'}           , []                          ; ...'xvc'   , 'MuPAD Graphics'             , '-69'                       , ...{'Open', 'mupad(''%1'')'}              , []                          ; ...'xvz'   , 'MuPAD Graphics'             , '-70'                       , ...{'Open', 'mupad(''%1'')'}              , []                          ; ...'mlapp'       , 'MATLAB Application'              , [] , [], []      ; ... 'mltbx'       , 'MATLAB Toolbox'                  , [] , [], []      ; ... 'mldatx'      , 'Simulink Scenario'               , [] , [], []      ; ...  'req'         , 'Simulink Requirements Link'      , [] , [], []      ; ... 'sldd'        , 'Simulink Dictionary'             , [] , [], []      ; ... 'slddc'       , 'Simulink Dictionary'             , [] , [], []      ; ...      'mlappinstall', 'MATLAB Application'              , [] , [], []      ; ...  'mlpkginstall', 'MATLAB Support Package'          , [] , [], []      ; ... 'slxp'        , 'Simulink Protected Model Package', [] , [], []      ; ... 'sltx'        , 'Simulink Template'               , [] , [], []      ; ... 'mlprj'       , 'MATLAB Project'                  , [] , [], []};% Possibly trim list
if (~isempty(userExtList))fileExtCell = fileExtCell(ismember(fileExtCell(:, 1), ...regexprep(userExtList, '\.', '')), :);
end% Make registry file
if (~isempty(fileStr))% Possibly add file extension[~, ~, tmp] = fileparts(fileStr);if (isempty(tmp))fileStr = [fileStr, '.reg'];endfid = fopen(fileStr, 'w');
elsefid = fopen('MatlabFileAssocFix.reg', 'w');
end
if (fid == -1)error('Failed to create registry file')
end
% Write intial lines
fprintf(fid, '%s\r\n\r\n', 'Windows Registry Editor Version 5.00');
fprintf(fid, '%s\r\n\r\n', ';FIXES MATLAB FILE ASSOCIATIONS');% REMOVE OLD KEYS
explorerKey = ['HKEY_CURRENT_USER\Software\Microsoft\Windows\', ...'CurrentVersion\Explorer\FileExts'];
% Iterate over file extensions
for fileExtNo = 1 : size(fileExtCell, 1)rmKeys  = {};fileExt = fileExtCell{fileExtNo, 1};% File extension keys[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f .', fileExt, ...' /k /e']);if (~status)keys = regexp(result, '(HKEY_CLASSES_ROOT[\x0000-\xffff]*?)\n', 'tokens');rmKeys = [rmKeys, keys{:}];end% Old style keys without version numbersif (~strcmpi(fileExt, 'mexw64'))% Uses single DDE key for mex filesif (strcmpi(fileExt, 'mexw32'))fileExtTmp = 'mex';elsefileExtTmp = fileExt;end[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f ', ...fileExtTmp, 'file /k /e']);if (~status)keys = regexp(result, '(HKEY_CLASSES_ROOT[\x0000-\xffff]*?)\n', ...'tokens');rmKeys = [rmKeys, keys{:}];endend% New style keys with version numberif (strcmpi(action, 'add'))% Only remove keys related to this version[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f MATLAB.', ...fileExt, '.', verStr ' /k']);else% Remove keys related to ALL version[status, result] = dos(['reg query HKEY_CLASSES_ROOT /f MATLAB.', ...fileExt, '. /k']);endif (~status)keys = regexp(result, '(HKEY_CLASSES_ROOT[\x0000-\xffff]*?)\n', 'tokens');rmKeys = [rmKeys, keys{:}];end% Explorer keys[status, result] = dos(['reg query ', explorerKey, ' /f .', fileExt, ...' /k /e']);if (~status)keys = regexp(result, '(HKEY_CURRENT_USER[\x0000-\xffff]*?)\n', 'tokens');rmKeys = [rmKeys, keys{:}];end% Write to fileif (~isempty(rmKeys))fprintf(fid, '%s\r\n\r\n', [';REMOVES ', upper(fileExt), ...' FILE ASSOCIATIONS']);for keyNo = 1 : length(rmKeys)key = rmKeys{keyNo};fprintf(fid, '%s\r\n\r\n', ['[-', key, ']']);endend
end% ADD KEYS
if (~strcmpi(action, 'delete'))% Get text Persistent Handler[status, result] = dos(...'reg query HKEY_CLASSES_ROOT\.txt\PersistentHandler /ve');if (~status)PersistentHandler = regexp(result, '\{[\x0000-\xffff]*?\}', 'match');PersistentHandler = PersistentHandler{1};elsePersistentHandler = '';end% DDE callddeCall = 'ShellVerbs.Matlab';if (verNum > 8)% Changed from R2013addeCall = [ddeCall, '.', verStr];end% Default icondefIcon = 'm';if (~exist(fullfile(binPath, 'm.ico'), 'file'))defIcon = '';end% Path to MATLAB binary directory with \\binPathStr = regexprep(binPath, '\\', '\\\\');% Write Shell Open keykey = ['[HKEY_CLASSES_ROOT\Applications\MATLAB.exe\shell\open', ...'\command]%r', '@="\"', binPathStr, '\\MATLAB.exe\" \"%1\""%r%r'];fprintf(fid, '%s\r\n\r\n', ';ADD SHELL OPEN');lines = regexp(key, '([\x0000-\xffff]*?)%r', 'tokens');for lineNo = 1 : length(lines)fprintf(fid, '%s\r\n', lines{lineNo}{1});end% Iterate over file typesfor fileExtNo = 1 : size(fileExtCell, 1)fileExt = fileExtCell{fileExtNo, 1};% File extension keyskey  = ['[HKEY_CLASSES_ROOT\.', fileExt, ']%r@="MATLAB.', fileExt, '.', ...verStr, '"%r'];if (strcmpi(fileExt, 'm') && ~isempty(PersistentHandler))% Add some valueskey = [key, '"Content Type"="text/plain"%r', ...'"PerceivedType"="Text"%r'];endkey = [key, '%r'];key = [key, '[HKEY_CLASSES_ROOT\.', fileExt, ...'\OpenWithProgids]%r"MATLAB.', fileExt, '.', verStr, '"=""%r%r'];if (strcmpi(fileExt, 'm') && ~isempty(PersistentHandler))key = [key, '[HKEY_CLASSES_ROOT\.', fileExt, ...'\PersistentHandler]%r@="', PersistentHandler, '"%r%r'];endkey  = [key, '[HKEY_CLASSES_ROOT\.', fileExt, ...'\Versions\MATLAB.', fileExt, '.' verStr, ']%r"FileVersionMS"=dword:', ...verHex, '%r"FileVersionLS"=dword:00000000%r%r'];% DDE keysddeData = fileExtCell(ismember(fileExtCell(:, 1), fileExt), :);key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...']%r@="', ddeData{2}, '"%r'];if (~isempty(ddeData{3}))key = [key, '"FriendlyTypeName"="@', binPathStr, '\\matlab.exe', ...',', ddeData{3}, '"%r'];endkey = [key, '%r'];% Iconicon = fileExt;if (~exist(fullfile(binPath, [icon, '.ico']), 'file'))icon = defIcon;endif (~isempty(icon))key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\DefaultIcon]%r@="', binPathStr, '\\', icon, '.ico,0"%r%r'];end% Shell actionsfor shellActionNo = 4:5ddePar = ddeData{shellActionNo};if (~isempty(ddePar))key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\Shell\', ddePar{1}, ']%r@="', ddePar{1}, '"%r%r'];key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\Shell\', ddePar{1}, '\command]%r@="\"', binPathStr, ...'\\matlab.exe\""%r%r'];key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\Shell\', ddePar{1}, '\ddeexec]%r@="', ddePar{2}, '"%r%r'];key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\Shell\', ddePar{1},'\ddeexec\application]%r@="', ...ddeCall, '"%r%r'];key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\Shell\', ddePar{1},'\ddeexec\topic]%r@="system"%r%r'];endend% Explorer keyskey = [key, '[', explorerKey, '\.', fileExt, '\OpenWithProgids]%r'];if (strcmpi(fileExt, 'm'))key = [key, '"m_auto_file"=hex(0):%r'];endkey = [key, '"MATLAB.', fileExt, '.',  verStr, '"=hex(0):%r%r'];if (~isempty(ddeData{4}))% Add keykey = [key, '[', explorerKey, '\.', fileExt, ...'\OpenWithList]%r"a"="MATLAB.exe"%r"MRUList"="a"%r%r'];elsekey = [key, '[', explorerKey, '\.', fileExt, '\OpenWithList]%r%r'];end% Write to filefprintf(fid, '%s\r\n\r\n', [';ADD ', upper(fileExt), ...' FILE ASSOCIATIONS']);lines = regexp(key, '([\x0000-\xffff]*?)%r', 'tokens');for lineNo = 1 : length(lines)fprintf(fid, '%s\r\n', lines{lineNo}{1});endendend% Cloese file
fclose(fid);

解决MATLAB不能设置为.m .slx .mat等文件默认打开方式相关推荐

  1. win7错将.exe文件默认打开方式设置为记事本,如何修改?

    今天手残,把exe文件默认打开方式设置成了记事本,修改方法如下: 1.新建一个TXT文件,输入以下注册表信息: Windows Registry Editor Version 5.00[-HKEY_C ...

  2. ubuntu创建可执行图标、设置文件默认打开方式

    下面以在ubuntu上安装CAJVIewer为例进行介绍 1 准备工作 1.1 下载可执行程序 https://download.cnki.net/CAJViewer-x86_64-buildubun ...

  3. windows .exe 文件默认打开方式变成记事本的解决方法

    windows .exe 文件默认打开方式变成记事本的解决方法 如果cmd.exe打不开,先将默认打开方式切换成cmd.exe 如果用户选择了默认的模式,会在注册表中写一个UserChoice的注册信 ...

  4. 设置.ipynb文件默认打开方式为Jupyter Notebook

    设置.ipynb文件默认打开方式为Jupyter Notebook 设置双击直接打开.ipynb文件

  5. 如何设置Adobe Acrobat DC为pdf的默认打开方式

    如何设置Adobe Acrobat DC为pdf的默认打开方式 首先我们找到要打开的PDF文件--------> 右键pdf文件--------> 打开方式--------->选择其 ...

  6. 设置Spyder为py文件默认打开方式

    设置Spyder为py文件默认打开方式 右键一个py文件 → 打开方式 → 选择其他应用,就会出现下面这个界面,把改选的都选上,然后查找其他应用. 然后找到你的spyder.exe,点打开就好了. 需 ...

  7. 解决MATLAB不能设置为.m文件默认打开方式

    转载:https://blog.csdn.net/yujiaerzong/article/details/77624167 将下面代码复制保存为 associateFiles.m 文件. 或者从下面链 ...

  8. xftp6设置默认打开文件的程序_修改文件默认打开方式,不改变原图标

    由于经常需要看pdf文件,一直以来都是用的Microsoft Edge阅读pdf文件,但是Microsoft Edge打开pdf文件字体的清晰度不高,而且使用ctrl+f进行查找时,高亮部分不够明显, ...

  9. Eclipse设置各类型文件默认打开方式

    如何修改Eclipse各类型文件的默认打开方式 工具/原料 Eclipse 方法/步骤 1 打开Eclipse,选择[window]-->[Preferences]打开设置 2 依次选择Gene ...

  10. 设置文件默认打开方式

    方法1: 通常情况下,可以直接通过 右键->打开方式,设置文件的打开默认打开方式: 方法2:也可以通过控制台命令: assoc .yuv=yuvfile ftype yuvfile=D:\yuv ...

最新文章

  1. activeMQ 本地测试
  2. GDI+中发生一般性错误
  3. 用离散傅里叶变换来实现OFDM
  4. python做一个窗口样式_python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法...
  5. re:Invent大会第十年,亚马逊云科技推出了哪些底层自研技术
  6. Java jar 版本 查看
  7. 微服务高可用之熔断器实现原理与 Golang 实践
  8. C# 通过一个控制台打开另一个控制台
  9. LINUX基本指令、NGINX负载均衡基本操作与解释
  10. python绘制多边形_在python-matplotlib中绘制3D多边形
  11. 创建和删除目录mkdir/rmdi
  12. 互联网寒冬,腾讯人均发放巨额奖励,更是在号召「共同富裕」
  13. 第9章 逻辑回归 学习笔记 中
  14. Java对接西门子S7
  15. 第十二届蓝桥杯模拟赛Python组(第三期)
  16. 自然语言处理入门(4)——中文分词原理及分词工具介绍
  17. 北京交管部门多举措进行二环慢行系统改造,提升通行安全与效率
  18. NBA篮球经典动画gif系列连载之三
  19. 关于turtlebot仿真报错The majority of dropped messages were due to..... 修改记录
  20. Matlab求矩阵的Jordan标准形

热门文章

  1. 1.5SpringBoot之Tomcat日志配置
  2. adt变频器故障代码ol2_英威腾变频器故障代码表
  3. JUnit5学习之一:基本操作
  4. golang gzip解压
  5. 海康8700联网网关如何通过GB28181接入安防摄像头互联网直播流媒体解决方案EasyGBS实现web端无插件直播
  6. IDEA设置字体随鼠标滚动放大缩小
  7. IDEA设置字体大小没反应解决
  8. 【metasploit】1 渗透测试与metasploit基础介绍 [PTES|msf|armitage安装]
  9. 教你轻松解决CSRF跨站请求伪造攻击
  10. 常见植被指数及适用场景