Durchwandern eines Datei Baums. Ziel: Datei in alle Unterver

Anfängerfragen zum Programmieren mit PureBasic.
Frank Smart
Beiträge: 26
Registriert: 20.07.2005 15:21

Durchwandern eines Datei Baums. Ziel: Datei in alle Unterver

Beitrag 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
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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:
Benutzeravatar
Macros
Beiträge: 1361
Registriert: 23.12.2005 15:00
Wohnort: Olching(bei FFB)
Kontaktdaten:

Beitrag 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)
Zuletzt geändert von Macros am 26.12.2005 01:22, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag 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.
Frank Smart
Beiträge: 26
Registriert: 20.07.2005 15:21

Beitrag 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
Zuletzt geändert von Frank Smart am 26.12.2005 01:28, insgesamt 1-mal geändert.
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Wie bekommst du den die Ordner-Daten vom Server? Also großes Paket oder alles einzeln?
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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

;-)
Benutzeravatar
Batze
Beiträge: 1492
Registriert: 03.06.2005 21:58
Wohnort: Berlin
Kontaktdaten:

( Liest eigentlich irgendwer diese Titel? )

Beitrag von Batze »

Welches FTP-Programm nutzt du denn zur Zeit?
Hier sind meine Codes (aber die Seite geht gerade nicht):
http://www.basicpure.de.vu
Frank Smart
Beiträge: 26
Registriert: 20.07.2005 15:21

Beitrag 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?
Antworten