Seite 1 von 1

Verschieben von Files mittels Rekursion

Verfasst: 19.04.2006 09:59
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.