Verschieben von Verzeichnisinhalten samt Unterverzeichnissen



  • Hallo zusammen,

    ich habe ein nettes kleines Snippet gefunden, welches ermöglicht, ganze Verzeichnisse mit Hilfe der Windows eigenen Funktionen zu verschieben:

    int MoveFiles(AnsiString slSourceDir, AnsiString slTargetDir)
    {
      SHFILEOPSTRUCT sh;
      ZeroMemory(&sh, sizeof(sh));
    
      sh.hwnd = NULL;
      sh.fFlags = FOF_NOCONFIRMATION | FOF_SILENT | FOF_FILESONLY;
      sh.wFunc = FO_MOVE;                  // Durchzuführende Operation
    
      slSourceDir+='\0'; // doppelte Nullterminierung erforderlich !
      sh.pFrom = slSourceDir.c_str();
    
      slTargetDir+='\0';                   // doppelte Nullterminierung
                                           // erforderlich !
      sh.pTo    = slTargetDir.c_str();
    
      sh.hNameMappings = NULL;
      sh.lpszProgressTitle = NULL;
      return SHFileOperation (&sh);
    }
    

    Mit dieser Funktion schafft man es, z. B. das Verzeichnis C:\Temp nach D:\Temp zu verschieben/umzubenennen. Wie kann ich es aber anstellen, daß er z. B. alle Dateien des Verzeichnisse C:\Temp INCLUSIVE dessen Unterverzeichnisse in das bereits VORHANDENE Verzeichnis C:\Temsammlung verschiebt?

    Die Beschreibung der Funktion sieht für einen solchen Fall den Aufruf

    MoveFiles("C:\\Temp\\*.*","C:\\Tempsammlung")
    

    vor, was jedoch (natürlich) nur alle Dateien OHNE Unterverzeichnisse verschiebt.

    Gibt es jemanden, der mir hier helfen kann?

    Mipe



  • Mipe schrieb:

    ich habe ein nettes kleines Snippet gefunden ... Wie kann ich es aber anstellen, daß er z. B. alle Dateien des Verzeichnisse C:\Temp INCLUSIVE dessen Unterverzeichnisse in das bereits VORHANDENE Verzeichnis C:\Temsammlung verschiebt?

    Hättste mal lieber das nette kleine Snippet aus unserer unserer FAQ benutzt (unter "Dateien+Verzeichnisse"), dann hättest du dir die Frage sparen können? 😉


Anmelden zum Antworten