Verfasst am: 25.08.2011, 13:23
Titel: Kopieren, Einfügen, Name ändern
Hey an Alle,
ich habe folgendes Problem:
Ich habe viele verschiedene Ordner in denen verschiedene Dateien liegen. Die Struktur sieht so aus:
Hauptordner: Ordner 1:
Datei1.txt
Datei2.txt
Datei3.txt
Ordner 2:
Datei1.txt
Datei2.txt
Datei3.txt
...
Nun will ich aus jedem Ordner diese Dateien kopieren und lediglich in den Hauptordner packen. Damit dann alles so ausschaut:
Hauptordner:
Datei1_1
Datei1_2
Datei2_1
Datei2_2
Datei3_1
Datei3_2
usw...
Das ist nämlich ein Problem für mich. Denn wie man sieht heißt Datei1.txt in jedem Ordner gleich, hat aber in jedem Ordner trotzdem einen anderen Inhalt. Ich möchte sie deswegen nicht überschreiben oder so, sondern jede Datei aus jedem Ordner seperat rauskopieren, umbenennen(z.Bsp im Ordner 1 immer ne "_1" ran, siehe oben) und in den Hauptordner einfügen.
Es ist alles machbar. 2x den Befehl dir() benutzen in 2 verschachtelten Schleifen und dann die Dateien mit renamefile() gemäß Schleifenvariable 1 und 2 umbennen.
ich komme nicht so recht zu rande ?
wozu brauche ich die 2. schleife denn ?
renamefile gibts doch garnicht als befehl, oder ?
und meine Dateinamen sind zeimlich lang. Kann man auch irgendwie wildcards benutzen ? Weil charakteristisch für jede datei sind die ersten 5 buchstaben. ? Ich habe das bei mir versucht mit sternchen deutlich zu machen.
ich hoffe ihr könnt mir helfen.
Erste Schleife über die Ordner, zweite Schleife über die enthaltenen Files.
Zitat:
renamefile gibts doch garnicht als befehl, oder ?
Es gibt zwar ein sehr schnelles FileRename in der FEX als C-mex, aber ich vermute Du sprichst nicht über mehrere tausend Files. Dann ist MOVEFILE geeignet um Files zu bewegen.
Zitat:
und meine Dateinamen sind zeimlich lang. Kann man auch irgendwie wildcards benutzen ?
Nein. Du wirst zwar Wildcards im DIR-Befehl benötigen, um die Listen der Files zu erhalten. Um alle Files eines Ordners in einen anderen zu bewegen sind Wildcards auch geeignet. Zum Umbenennen der Files musst Du aber die langen Dateinamen explizit verwenden. Ist das eine Schwierigkeit?
Ich habe erst die Anzahl der Unterordner bestimmt und dann wollte ich mittels der Schleife in jeden Ordner gehen und dort die Files erst umbenennen und anschließend in den übergeordneten Ordner kopieren.
Das Problem ist jetzt aber das in movefiles ja alles in Anführungszeichen geschrieben werden muss und deswegen das mit der Laufvariable nicht funktioniert. Das selbe Problem mit cd('').
Habt ihr ne Idee wie ich das machen könnte ?
Kann mir von euch noch jmd verraten was ich tuen kann, damit die Schleife vortfährt auch wenn mal ein Ordner oder so fehlt. weil sonst immer die Fehlermeldung auftaucht z,Bsp: "Name_Unterordner_11" exisitiert nicht, wenn Unterordner 11 nicht da ist. Weil das Problem ist, selbst wenn ich mal 100 ordner habe, dann bin ich teilweise gezwugen Ordner 23 oder 56 oder so im Vorhinein zu löschen. Dann stößt er in der schleife bei diesen ordner natürlich darauf das die garnicht exisitieren.
Habt ihr ne Idee ?
Hey bin doch noch nicht ganz damit zufrieden.
ich habe jetzt 3 ordner. Ordner 1,2 und 4. Er wertet mir aber nur die ersten 2 aus. Es kommt zwar keine Fehlernachricht, aber er sollte den vierten auch auswerten.
Weiß du ne Idee ?
Code:
list = dir(pwd());
list = list(~ismember({list.name}, {'.' '..'}));
unterordner={list.isdir} ;
unterordner=cell2mat(unterordner);
unterordner=unterordner(unterordner~=0);
Anzahl_Unterordner=length(unterordner) ;
ordner=pwd;
for j=1:Anzahl_Unterordner
Bist Du sicher dass 'AB*.txt' nur auf ein einziges File passt? Ansonsten crashed das Program nämlich. Und wieso bennenst Du das File erst um und kopierst es dann? Ich dachte Du wolltest die Files einfach Verschieben und umbenennen.
Wenn das Programm nicht das macht, was Du erwartest, kannst Du ein paar Breakpoints im Editor sestzen und das Programm zeilenweise abarbeiten lassen. Der Debugger ist immer ein wertvolles Werkzeug beim Programmieren.
ja also es kommt keine Fehlermedlung wie "Ordner exisitert nicht" oder so, weil er ihn dann einfach auslässt, aber er nimmt die folgenden unterordner dann auch nicht.
Also wenn ich ordner 1,2 und 4 habe dann macht er alles für ordner 1 und 2, aber dann macht er das nicht mehr für ordner 4. keine ahnung warum.
Das ist mein problem.
Ja genau, richtig! Ich will den File kopieren und dann umbenennen, weil die files in jedem unterordner immer gleich heißen. also die AB-Files heißen alle Ab17_jkl.....txt. Das gleiche gilt für die CD.....txt files. Und wenn ich sie in den hauptordner kopiere ohne sie umzubennen dann streikt matlab denke ich, oder überschreibt sie einfach. Ja und es gibt wirklich immer nur ein File das so beginnt.
Also ich benenne erst um und kopiere dann. Gibt es eine möglichkeit erst zu kopieren und dann umzubenennen ohne das ich schwierigkeiten mit dem übschreiben bekomme ?
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.