Directory.Move mit VB.net (1 Betrachter)

  • Ersteller des Themas
  • #1

hondocrx

Registriert
Black-Market: 0 / 0 / 0
1 März 2014
4
2 %
Hallo.

Ich Möchhte unter VB.net mit dem dem Befehl Directory.Move(sourceDirectory, destinationDirectory) Unterordner um eine Ebene in der Verzeichnissstruktur anheben

c:\temp\aaaaa\SOLL_WEG\bbbb soll nach c:\temp\aaaa\bbbb

Das bekomme ich aktuell nicht hin da ein Fehler ausgelöst wird wenn der Ordner (hier aaaa) schon besteht.

Hat jemand einen Tip für mich wie man das sauber umsetzen kann

Aktuell nutze ich ein New Process() mit einer cmd & move als Hilfskontruktion.


Vielen Dank schon mal

hondocrx
 
  • Ersteller des Themas
  • #3

hondocrx

Registriert
Black-Market: 0 / 0 / 0
1 März 2014
4
2 %
Hallo Gooman. Danke.

Da hab ich mich wohl falsch ausgedrückt.

Ich möchte nicht den Fehler abfangen sonder den Ordner verschieben.
Ich werd nachher mal ausprobieren ob Kopieren & danach Löschen funkltioniert oder die gleiche Fehlermeldung generiert.

Oder meinst Du etwas anderes?

MfG
 

GooMan

Forum-Mitglied
Black-Market: 0 / 0 / 0
20 November 2011
112
14 %
Das bekomme ich aktuell nicht hin da ein Fehler ausgelöst wird wenn der Ordner (hier aaaa) schon besteht.
Welcher "Fehler" wird denn ausgelöst..? Was willst du den bezwecken? Einen merge von 2 Ordnern? Also den OrdnerINHALT verschieben?

Wenn ja:
C#:
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
    if (source.FullName.ToLower() == target.FullName.ToLower())
    {
        return;
    }

    // Check if the target directory exists, if not, create it.
    if (Directory.Exists(target.FullName) == false)
    {
        Directory.CreateDirectory(target.FullName);
    }

    // Copy each file into it's new directory.
    foreach (FileInfo fi in source.GetFiles())
    {
        Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
        fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
    }

    // Copy each subdirectory using recursion.
    foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
    {
        DirectoryInfo nextTargetSubDir =
            target.CreateSubdirectory(diSourceSubDir.Name);
        CopyAll(diSourceSubDir, nextTargetSubDir);
    }
}
 
  • Ersteller des Themas
  • #5

hondocrx

Registriert
Black-Market: 0 / 0 / 0
1 März 2014
4
2 %

GooMan

Forum-Mitglied
Black-Market: 0 / 0 / 0
20 November 2011
112
14 %
Das ist erwartetes Verhalten. Du willst ja ein Ordner samt Inhalt kopieren, aber nur wenn der Ordner nicht bereits existiert. Wie oben geschrieben ist das eine Möglichkeit das du nur den Inhalt kopierst. Deswegen meine Frage ob du möchtest das du 2 Ordner zusammenfügen willst, oder den Ordner bei bestehen löschen.

Falls du den Ordner löschen willst wenn er bereits besteht wäre die Möglichkeit if Directory.Exists -> Delete und dann Copy zu nutzen.
 

Dieses Thema betrachten gerade (Benutzer: 0, Gäste: 1)