Verfasst am: 14.09.2017, 16:55
Titel: Mehrere Ordner umbenennen
Hallo,
ich überlege mir gerade wie ich inMatLab ein Programm schreiben kann, das mir Ordner umbenennt.
Problem:
Ich habe in einem Ordner mehrere Unterordner mit Nummern als Namen (leider nicht fortlaufend).
Also z.B. der 1. Unterordner hat den Namen: "Nr.1", der zweite den Namen "Nr.2" und der dritte aber z.B. den Namen "Nr. 4".
Nun will ich mit Hilfe eines kleinen Programms die Unterordner umbenennen.
Dazu habe ich mir eine Excel Liste erstellt in der in der 1. Spalte die alte Bezeichung steht und in der zweiten Spalte die neue Bezeichnung in die ich die Unterordner gerne umbenennen würde.
z.B.
Nr.1__________Fotos Urlaub 2011
Nr.2__________Fotos Urlaub 2013
Nr.4__________Fotos Urlaub 2014
usw.
Hat jemand eine Idee mit welchen Befehlen ich das machen kann.
Ich bin nicht besonders geübt im Programmieren mit MatLab und darum wollte ich mal in die Runde fragen. Vielleicht habt Ihr ja bereits Erfahrungen mit einem änlichen Programm gesammelt.
Das Programm sollte also die Nummer des ersten Unterordners einlesen. Anhand der eingelesenen Nummer soll es dann den neuen Unterordnernamen aus der Excel Tabelle herauslesen und den Unterordner dann umbenennen. Danach soll es mit dem zweiten Unterordner fortfahren,...
Hallo
mit XLSREAD kannst deine Excel-Tabelle einlesen
mit UIGETDIR kannst den Hauptordner auswählen, wo die Unterordner umbenannt werden
mit DIR kannst die Ordner in Hauptordner einlesen
mit MOVEFILE umbennen
mit STRCMP in der Liste vergleichen
so ungefähr
Code:
rootdir = pwd [~,renamelist] = xlsread(fullfile(rootdir, 'renamelist.xls')) % Einlesen der Unterordner
dirs= dir(rootdir);
dirs= {dirs([dirs.isdir]).name};
% entfernen aus der Liste Current und Parent Ordner
dirs = setdiff(dirs, {'.', '..'})
% Rename in a LOOP for k = 1:length(dirs )
olddirname = dirs{k}
pos = strcmp(renamelist(:,1), olddirname) ifany(pos)
newdirname = renamelist{pos,2}
oldfullname = fullfile(rootdir, olddirname );
newfullname = fullfile(rootdir, newdirname );
movefile(oldfullname, newfullname);
end end
Danke für deine Antwort.
Es tut mir leid, dass ich erst so spät wieder schreibe.
Zur Frage:
Leider verstehe ich deinen Quellcode noch nicht ganz.
Wie oben bereits geschrieben ist MatLab neu für mich.
Könntest du vieleicht bitte noch etwas mehr auskommentieren. Also was genau wird in den jeweiligen Zeilen gemacht?
Du kannst hier im Forum auf jedes blaue Kommando klicken und siehst sofort die Hilfe-Seiten. Beginne erstmal damit und stelle dann konkrete Fragen, wenn ein Befehl noch nicht klar ist. Das ist effizienter als generell alle Teile des Codes zu erklären, die vielleicht auch gar keine Fragen aufwerfen.
Leider verstehe ich deinen Quellcode noch nicht ganz.
Wie oben bereits geschrieben ist MatLab neu für mich.
Da steht, dass du nicht besonders geübt bist, aber nicht, dass du Matlab Neuling bist.
Welche Zeilen konkret, kannst du nicht verstehen?
Hier noch mal mit etwas mehr Kommentaren:
% Einlesen der Unterordner
dirs= dir(rootdir);
dirs= {dirs([dirs.isdir]).name};
% entfernen aus der Liste Current und Parent Ordner
dirs = setdiff(dirs, {'.', '..'})
% Rename in a LOOP for k = 1:length(dirs )
%
% alten Ordner Namen uas del Liste holen
olddirname = dirs{k}
%
% Name suchen in deiner Umbenennungstabelle und zwar in der ersten Spalte % als Ergebnis kommt die position
pos = strcmp(renamelist(:,1), olddirname) % wenn etwas gefunden wurde ifany(pos) % dann der neuen Namen aus der Tabelle holen
newdirname = renamelist{pos,2} % Pfade zu absoluten Pfaden zusammensetzen % für alten Namen
oldfullname = fullfile(rootdir, olddirname );
% und für neuen Namen
newfullname = fullfile(rootdir, newdirname );
% Umbennen des ordners, dazu MOVEFILE verwenden movefile(oldfullname, newfullname);
end end
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.