Seite 1 von 2

Durchwandern eines Datei Baums. Ziel: Datei in alle Unterver

Verfasst: 26.12.2005 00:25
von Frank Smart
Durchwandern eines Datei Baums. Ziel: Datei in alle Unterverzeichnisse kopieren. (so sollte der Titel lauten!)
--------------------------------------------------------------------------------------
Hallo,

ich habe folgendes Problem, ich möchte eine Datei in alle Unterverzeichnisse eines Dateibaums kopieren. Irgendwo habe ich mal gehört, man solle Dateibäume möglichst nicht rekursiv durchwandern. Das ganze soll noch per FTP geschehen. Wie würdet ihr das machen? Erst den gesamten Dateibaum einlesen? Also, eine Datei per FTP ist Dank der FTP-Libraries nicht das Problem, oder sollte es nicht sein. Aber das Durchwandern des Dateibaums macht mir Kopfzerbrechen.

Beste Grüße
Frank

Verfasst: 26.12.2005 00:30
von Konne
Also was du da gehört hast mit NICHT Rekursiv ist IMHO fölliger Käse. Mach es Rekursiv und es ist kein Problem. Bsp folgt später.

Und hier der Code:

Code: Alles auswählen

Procedure SaveInDir(Dir.s,ID,File.s)
  ExamineDirectory(ID,Dir.s,"")
  Debug Dir.s
  CopyFile(File.s,Dir.s+GetFilePart(File.s))
  Repeat
    Select NextDirectoryEntry()
      Case 2
        Name.s=DirectoryEntryName()
        If Name.s<>"." And Name.s<>".."
          SaveInDir(Dir.s+Name.s+"\",ID+1,File.s)
          UseDirectory(ID)
        EndIf
      Case 0
        ProcedureReturn 1
    EndSelect
  ForEver  
EndProcedure


SaveInDir("C:\",1,"Büro.txt")
Dir.s=Ist der StartPfad
ID=Ist die Erste ID des ExamineDirectorys() kann eigendlich immer 1 oder 0 sein außer du hast schon eine Überprüfung eines Ordners
File.s=Ist das File dass du verbreiten möchtest, dies kann (glaube ich) auch mit einem Pfad sein.

Achja und wenn du lust hast kannst du ein Tool schreiben dass die Datei "Büro.txt" aus jedem Verzeichnis in "C:\" löscht, dass könnte ich jetzt nämlich gebaruchen :freak:

Verfasst: 26.12.2005 00:52
von Macros
Kommt schon :D

Code: Alles auswählen

Procedure.s delFiles(directory.s , directoryid.l )
  If Right(directory,1)<>"\"
    directory+"\"
  EndIf
  ExamineDirectory(directoryid,directory,"*.*")
  dirid=NextDirectoryEntry()
  While dirid
    If dirid=2
     
       
        If DirectoryEntryName()<>"." And DirectoryEntryName()<>".."     
          delFiles(directory+DirectoryEntryName()+"\",directoryid+1)      
          UseDirectory(directoryid)
        EndIf
        ElseIf dirid=1
        If DirectoryEntryName()="Büro.txt"
        DeleteFile(directory+"Büro.txt")
    EndIf
    EndIf
    dirid=NextDirectoryEntry()
  Wend
  ProcedureReturn ""
EndProcedure

delFiles("C:\temp\",0)

Verfasst: 26.12.2005 00:55
von Kiffi
> Und hier der Code:

... der jedoch nicht mit FTP funktioniert.
Frank Smart hat geschrieben:Das ganze soll noch per FTP geschehen
Grüße ... Kiffi

Verfasst: 26.12.2005 01:01
von Konne
Ist folgendes FTP gemeint?
http://de.wikipedia.org/wiki/Ftp_%28Software%29
Sonst kenne ich nur das FTP Protokoll, das hat aber was mit Netzwerk zu tun.

Verfasst: 26.12.2005 01:24
von Frank Smart
Kiffi hat geschrieben:> Und hier der Code:

... der jedoch nicht mit FTP funktioniert.
Frank Smart hat geschrieben:Das ganze soll noch per FTP geschehen
Ja, genau Kiffi! Also, was meint ihr? Den Dateibaum komplett einlesen und in ein Array oder so speichern, und dann in alle Unterverzeichnisse meine Datei kopieren. Hintergrund der Aktion ist ich lade öfters eine "php.ini" in alle Unterverzeichnisse auf FTP-Server. Da ich das bisher immer manuell mache :( ... isss ne Sauarbeit! Und oft genug vergisst man ein Unterverzeichnis. Ich will mir in PureBasic ein kleines Tool schreiben, mit dem ich mir die Sache vereinfache. Im Prinzip ein spezieller FTP-Client. Aber Danke schon einmal für Eure Ideen!

Frank

Verfasst: 26.12.2005 01:28
von Konne
Wie bekommst du den die Ordner-Daten vom Server? Also großes Paket oder alles einzeln?

Verfasst: 26.12.2005 01:32
von Kiffi
Konne hat geschrieben:Ist folgendes FTP gemeint?
http://de.wikipedia.org/wiki/Ftp_%28Software%29
Sonst kenne ich nur das FTP Protokoll, das hat aber was mit Netzwerk zu tun.
äh, FTP = File Transfer Protocol

;-)

( Liest eigentlich irgendwer diese Titel? )

Verfasst: 26.12.2005 09:39
von Batze
Welches FTP-Programm nutzt du denn zur Zeit?

Verfasst: 26.12.2005 12:19
von Frank Smart
Batze hat geschrieben:Welches FTP-Programm nutzt du denn zur Zeit?
Also ich nutze den Total Commander als FTP-Client. Aber ich möchte mir auf Grundlage der beiden als Userlibraries verfügbaren FTP-Libs ein kleines Tool schreiben, um mir das kopieren der "php.ini" in alle Unterverzeichnisse zu erleichtern. Welche FTP-Lib ist für diesen Zweck besser geeignet, die von Paul Leischow oder die von num3?