2015-02-23 10 views
5

Czy mimo to można znaleźć historię wcześniej otwartych plików m w MATLAB R2014b z 2 lub 3 miesięcy temu? (Lista nazw plików i ścieżek)Historia poprzednio otwieranych plików m w MATLAB

+1

To interesujące pytanie. Chciałbym również znać odpowiedź na to pytanie. – rayryeng

+2

Powiązane: [Odzyskaj dłuższą listę ostatnich plików z edytora Matlab] (http://stackoverflow.com/q/28587501/2586922) –

Odpowiedz

8

Matlab R2014b przechowuje swoje najnowsze pliki:

%APPDATA%\MathWorks\MATLAB\R2014b\MATLAB_Editor_State.xml 

Jest to plik .xml więc łatwo załadować i analizować z xmlread. Nie jestem zaznajomiony ze składnią analizowania XML, ale tutaj jest sposób, aby uzyskać informacje na temat plików (być dostosowane do Twoich potrzeb kształcenia):

function [recentFiles] = GetRecentFiles() 
%[ 
    % Opens editor's state file 
    filepart = sprintf('MathWorks\\MATLAB\\R%s\\%s', version('-release'), 'MATLAB_Editor_State.xml'); 
    filename = fullfile(getenv('APPDATA'), filepart); 
    document = xmlread(filename); 

    % Get information about 'File' nodes 
    recentFiles = struct([]); 
    fileNodes = document.getElementsByTagName('File'); 
    for fni = 1:(fileNodes.getLength()) 

     attributes = fileNodes.item(fni-1).getAttributes(); % Careful, zero based indexing ! 

     for ai = 1:(attributes.getLength()) 

      % Get node attribute 
      name = char(attributes.item(ai-1).getName()); % Zero based + need marshaling COM 'string' type 
      value = char(attributes.item(ai-1).getValue()); % Zero based + need marshaling COM 'string' type 

      % Save in structure 
      name(1) = upper(name(1)); % Just because I prefer capital letter for field names ... 
      recentFiles(fni).(name) = value; 

     end 

    end  
%] 
end 

ta zwraca strukturę tak:

recentFiles = 

1x43 struct array with fields: 

    AbsPath 
    LastWrittenTime 
    Name 

NB: próbowałem wpisywać w okno poleceń mATLAB matlab.desktop.editor.*, ale wydaje się, że nic w sprawie niedawnych plików (w każdym razie istnieje wiele ciekawych rzeczy do manipulowania edytor z linii poleceń)

+0

Dziękuję za odpowiedź. To jest 50 ostatnio załadowanych plików. Czy możemy mieć historię ze starszymi plikami? – user2991243

+1

Nie sądzę, aby Matlab utrzymywał nieskończoną historię ... jedynym rozwiązaniem byłoby przeglądanie najnowszych plików systemu Windows (np. [Windows7] (http://www.itsupportguides.com/windows-7/windows-7-recent -items-folder-location /)) – CitizenInsane

2

Ostatnia odpowiedź jest naprawdę pomocna. Właśnie go zmodyfikowałem, aby przeczytać i otworzyć ostatnie pliki kart. Działa to na Matlab R2013a:

function [recentFiles] = recover_tabs() 
%[ 
% Opens editor's state file 
filepart = sprintf('MathWorks\\MATLAB\\R%s\\%s', version('-release'), 'MATLAB_Editor_State.xml'); 
filename = fullfile(getenv('APPDATA'), filepart); 
document = xmlread(filename); 

% Get information about 'File' nodes 
recentFiles = struct([]); 
fileNodes = document.getElementsByTagName('File'); 
for fni = 1:(fileNodes.getLength()) 

    attributes = fileNodes.item(fni-1).getAttributes(); % Careful, zero based indexing ! 

    for ai = 1:(attributes.getLength()) 

     % Get node attribute 
     name = char(attributes.item(ai-1).getName()); % Zero based + need marshaling COM 'string' type 
     value = char(attributes.item(ai-1).getValue()); % Zero based + need marshaling COM 'string' type 

     % Save in structure 
     name(1) = upper(name(1)); % Just because I prefer capital letter for field names ... 
     recentFiles(fni).(name) = value; 

    end 

end  

%  loop to access files in the tab history 
for j=1:length(recentFiles) 
    arquivo = [recentFiles(j).AbsPath '\' recentFiles(j).Name]; 
%   if exists, then open 
    if exist(arquivo, 'file') == 2 
     open(arquivo); 
    end 
end 

%] 
end 
+0

Dziękuję za to, pomógł mi odzyskać moje otwarte pliki .m – user3208430