Entwickler-Ecke
IO, XML und Registry - Directory.Move mit überschreiben
ottto - Di 02.06.15 14:07
Titel: Directory.Move mit überschreiben
Hallo zusammen,
ich möchte den Inhalt eines Ordners in einen anderen verschieben. Aber so, dass der eigentlich (Quell)Ordner erhalten bleibt. Da Move oder Robocopy das QuellVerzeichnis mitnehmen, hab ich versucht das Problem per Consolenanwendung zu lösen. Quell- und Zielverzeichnis werden per Parameter übergeben.
Das Tool funktioniert im Ansatz. Macht aber Probleme sobald ein UnterOrdner verschoben werden soll, den es im Ziel schon gibt. Ich brauche eine Möglichkeit den Zielordner + Inhalt zu überschreiben. Eine Möglichkeit wäre sicher Robocopy als Systembefehl einzubauen. Gibt es eine bessere Lösung?
Danke.
Gruß.
ottto
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19:
| DirectoryInfo verz1 = new DirectoryInfo(args[0]); foreach (FileInfo f in verz1.GetFiles()) { string zDatName = f.FullName.Replace(args[0], args[1]); if (File.Exists(zDatName)) { File.Delete(zDatName); } Console.WriteLine(f.FullName); Console.WriteLine(zDatName); File.Move(f.FullName, zDatName); } foreach (DirectoryInfo d in verz1.GetDirectories()) { string zVerName = d.FullName.Replace(args[0], args[1]); Console.WriteLine(d.FullName); Console.WriteLine(zVerName); Directory.Move(d.FullName, zVerName); } |
Delete - Di 02.06.15 17:23
- Nachträglich durch die Entwickler-Ecke gelöscht -
ottto - Di 02.06.15 18:20
Hallo Frühlingsrolle,
mein Problem ist, dass es im Zielordner schon gleichnamige Ordner gibt.
z.B.
im Quellordner gibt es Unterordner A,B, und C.
In B gibt es Unterordner B1, B2 und B3, je mit Dateninhalt.
Jetzt verschiebe ich mit meinem Tool alle Unterordner aus der Quelle ins Ziel. Im Ziel gibt es jetzt A,B,C. In B liegen B1,B2 und B3. ->Funktioniert.
Jetzt entsteht in der Quelle wieder ein Ordner B mit dem Unterordner B4. Dieser ist wieder mit Daten gefüllt.
Wenn mein Tool jetzt erneut gestartet wird, soll B4, ins Ziel, in den Ordner B verschoben werden.
Dabei stört dem Directory.Move aber, dass es schon einen Ordner B gibt.
Danke.
Gruß.
ottto
Delete - Di 02.06.15 19:40
- Nachträglich durch die Entwickler-Ecke gelöscht -
OlafSt - Mi 03.06.15 11:53
Ich glaube, der Ansatz ist schon nicht optimal.
Vielleicht wäre es cleverer, SrcDir und DestDir dateiweise zu vergleichen (FileExists) und im Falle einer negativen Auskunft den Move-Prozess anzuschubsen.
ottto - Mi 10.06.15 17:53
Frühlingsrolle hat folgendes geschrieben : |
Ich habe den Sinn des Tools noch immer nicht erfasst.
Was soll mit dem Quellordner genau passieren?
Sollen dessen Inhalte beibehalten werden und nur eine Art Sicherungskopie im Zielordner erstellt werden oder sollen die Quelldateien samt Ordnern in den Zielordner kommen, wobei der Quellordner leer bliebe? |
Sorry wegen der späten Antwort....
Im Quellordner werden, von anderer Stelle, "ständig" Daten abgelegt. Mein Tool soll diese Daten zyklisch (geplanter Task) in den Zielordner verschieben. Also den Quellodner leeren um Platz für neue Daten zu machen.
Ich werde jetzt mal versuchen Robocopy mit einzubauen.
Dann den Vorschlag von OlafSt probieren.
Danke.
Gruß.
ottto
ottto - Fr 19.06.15 13:54
Ich jab jetzt ROBOCOPY als Systembefehl mit eingebunden. Sicher nicht die schönste Lösung aber funktioniert.
Danke.
Gruß.
ottto
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!