日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/2 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 解决MATLAB不能设置为.m文件默认打开方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載:https://blog.csdn.net/yujiaerzong/article/details/77624167

  • 將下面代碼復制保存為 associateFiles.m 文件。
    或者從下面鏈接下載文件https://ww2.mathworks.cn/matlabcentral/fileexchange/51165-matlab-file-association-fix

  • 在MATLAB中運行 associateFiles.m 文件,即在命令行中輸入 associateFiles 然后 回車。

  • 步驟2程序運行生成文件 MatlabFileAssocFix.reg 。

  • 關閉MATLAB,雙擊運行 MatlabFileAssocFix.reg,會提示添加注冊表信息,同意。

  • 可以才去在bin目錄中選擇以管理員身份運行
    MatlabFileAssocFix.reg文件就在matlab安裝文件夾的bin目錄中

  • 設置.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 = {};
    else
    userExtList = {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 arch
    case ‘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’];
    end
    fid = fopen(fileStr, ‘w’);
    else
    fid = 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 numbers
    if (~strcmpi(fileExt, ‘mexw64’))
    % Uses single DDE key for mex files
    if (strcmpi(fileExt, ‘mexw32’))
    fileExtTmp = ‘mex’;
    else
    fileExtTmp = 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{:}];
    end
    end

    % New style keys with version number
    if (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’]);
    end
    if (~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 file
    if (~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, ‘]’]);
    end
    end
    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};
    else
    PersistentHandler = ‘’;
    end
    % DDE call
    ddeCall = ‘ShellVerbs.Matlab’;
    if (verNum > 8)
    % Changed from R2013a
    ddeCall = [ddeCall, ‘.’, verStr];
    end
    % Default icon
    defIcon = ‘m’;
    if (~exist(fullfile(binPath, ‘m.ico’), ‘file’))
    defIcon = ‘’;
    end
    % Path to MATLAB binary directory with \
    binPathStr = regexprep(binPath, ‘\’, ‘\\’);

    % Write Shell Open key
    key = [’[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 types
    for fileExtNo = 1 : size(fileExtCell, 1)
    fileExt = fileExtCell{fileExtNo, 1};

    % File extension keys key = ['[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']; end key = [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']; end key = [key, '[HKEY_CLASSES_ROOT\.', fileExt, ...'\Versions\MATLAB.', fileExt, '.' verStr, ']%r"FileVersionMS"=dword:', ...verHex, '%r"FileVersionLS"=dword:00000000%r%r'];% DDE keys ddeData = 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']; end key = [key, '%r']; % Icon icon = fileExt; if (~exist(fullfile(binPath, [icon, '.ico']), 'file'))icon = defIcon; end if (~isempty(icon))key = [key, '[HKEY_CLASSES_ROOT\MATLAB.', fileExt, '.' verStr, ...'\DefaultIcon]%r@="', binPathStr, '\\', icon, '.ico,0"%r%r']; end % Shell actions for 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'];end end% Explorer keys key = [key, '[', explorerKey, '\.', fileExt, '\OpenWithProgids]%r']; if (strcmpi(fileExt, 'm'))key = [key, '"m_auto_file"=hex(0):%r']; end key = [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 file fprintf(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}); end

    end

    end

    % Cloese file
    fclose(fid);

    總結

    以上是生活随笔為你收集整理的解决MATLAB不能设置为.m文件默认打开方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。