Verschieben von Files mittels Rekursion

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
Karl
Beiträge: 520
Registriert: 21.07.2005 13:57
Wohnort: zu Hause

Verschieben von Files mittels Rekursion

Beitrag von Karl »

Hallo,

kleine Prozedur zum Verschieben von Files einer bestimmten Dateiart für alle die, die ihre Dateien überall hinspeichern und nun an eine zentrale Stelle bringen wollen. Der Code ist in PB 3.94, lässt sich aber bestimmt leicht auf PB4 migrieren:

Code: Alles auswählen

Procedure verschiebe(StartPfad.s, Zielpfad.s, dateiart.s)
  
  ;sucht und verschiebt die angegebene Dateiart beginnend im Startpfad und allen Unterordnern auf den Zielpfad
  ;Beispielaufruf: verschiebe("c:\test", "d:\eigene dateien", "xls")
  
  Protected DirID.l, DateiTyp.b, quit.b, verz.s, DName.s, quelle.s, ziel.s
  
  
  DirID = ExamineDirectory(#PB_Any, StartPfad, "*.*")
  If DirID
    
    Repeat
      
      DateiTyp = NextDirectoryEntry()
      
      Select DateiTyp
        Case 0; Abbruch
          quit = 1
        Case 1; Datei
          DName = DirectoryEntryName()
          If LCase(dateiart) = Right(LCase(DName), 3)
            quelle = StartPfad + "\" + DName
            Debug "verschiebe: " + quelle
            ziel = Zielpfad + "\" + DName
            MoveFile_(@quelle, @ziel)
            
          EndIf
        Case 2; Directory
          DName = DirectoryEntryName()
          If DName <> "." And DName <> ".."
            ;nur wenn nicht selbst und nicht parent
            verschiebe(StartPfad + "\" + DName, Zielpfad, dateiart)
            UseDirectory(DirID)
          EndIf
      EndSelect
      
    Until quit
    
  EndIf
  
EndProcedure
Mit leichten Abwandlungen kann man das Ding bestimmt in einen "Norton Commander"-Clone einbauen.

Gruß Karl

No, no one ever hacked an AI.
The Kopyright Liberation Front also known as the justified ancients of Mumu!
PB 5.X