Ordnerstuktur abspeichern

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Ordnerstuktur abspeichern

Beitrag von Sauer-RAM »

Hi,
ich will ein Programm schreiben, welches die gesamte Ordnerstruktur inklusive Unterordner in einer Datei abspeichert. Leider komme ich momentan nicht weiter. Hier ist mal der code den ich schon habe:

Code: Alles auswählen

MainDirectory.s = "C:\Users\Benutzer\Desktop\Test\"
Directory.s = MainDirectory

If OpenFile(1,"D:\directtest.txt")
Else
  MessageRequester("Error","kann datei nicht erstellen")
  End
EndIf

name.s = ""

Start:
SetCurrentDirectory(Directory)
If ExamineDirectory(0,Directory,".")
  While NextDirectoryEntry(0)
    If DirectoryEntryType(0) = #PB_DirectoryEntry_Directory
      If FindString(Name, " " + DirectoryEntryName(0) + " ") > 0
        Goto Start
      EndIf
      WriteStringN(1,DirectoryEntryName(0) + " Dir")
      name.s = name + " " + DirectoryEntryName(0) + " "
      Directory = DirectoryEntryName(0)
      FinishDirectory(0)
      Goto Start
    ElseIf DirectoryEntryType(0) = #PB_DirectoryEntry_File
      If FindString(Name, " " + DirectoryEntryName(0) + " ") > 0
        Goto Start
      EndIf
      name.s = name + " " + DirectoryEntryName(0) + " "
      WriteStringN(1,DirectoryEntryName(0) + " File")
    EndIf
  Wend
  If Directory = MainDirectory
    End
  Else
    Directory = GetPathPart(DirectoryEntryName(0))
    Goto Start
  EndIf
EndIf


Ich hoffe mir kann jemand helfen. Ich habe schon ein Post gesehen der auch in die Richtung geht, dort war aber leider kein Code.

Vielen Dank schonmal für die Antworten.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Ordnerstuktur abspeichern

Beitrag von STARGÅTE »

Der Code kann nicht funktionieren.
Du nimmst bei ExamineDirectory() immer die gleiche Nummer (0) und wenn du nun in einen Unterordner gehst (was mit Goto sowieso fragwürdig ist) dann startest du wieder das auslesen mit der gleichen Nummer. Somit geht das Auslesen des übergeordneten Ordners verloren.

Tips:
Erstelle eine vernünftige Prozedur, mit der du einen Ordner durchgehen kannst und rufe diese Prozedur rekursiv auf, wenn du in einen Unterordner gehst.
Verwende dabei immer #PB_Any für ExamineDirectory damit der Fortschritt in der jeweiligen Tiefe nicht verloren geht.
Wenn du eine Prozedur schreibst, sparst du dir auch das Goto.
Als Parameter kannst du deiner Prozedur immer gleich den richtigen Pfad geben, dann sparst du dir auch das SetCurrentDirectory usw.
Ansonsten kannst du auch hier im Forum danach suchen, es wurde oft gepostet wie man rekursiv eine Ordnerstruktur ließt.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Sauer-RAM
Beiträge: 326
Registriert: 13.04.2009 16:22
Computerausstattung: Lenovo ThinkPad X230t Convertible
Wohnort: Haslach i. K.

Re: Ordnerstuktur abspeichern

Beitrag von Sauer-RAM »

Danke für die schnelle Antwort. Ich habe nicht nach rekursivem Ordnerstrukturscan gesucht, sondern nach Ordnerstruktur abspeichern, wo man nur einen Post findet. Ja das mit Goto war eher so eine Notlösung um zu sehen ob das Grundgerüst überhaupt läuft. Und mit Hab vergessen nach dem Goto FinishDirectory aufzurufen... ^^. Danke für den Tipp, jetzt weiß ich wonach ich in der Boardsuche suchen muss.
"Bildung kommt vom Bildschirm und nicht vom Buch, sonst hieße es ja Buchung."
Dieter Hildebrandt
"Bildung ist Das, was übrig bleibt, wenn man alles was man in der Schule gelernt hat, vergisst. "
Albert Einstein
Benutzeravatar
kunstlust
Beiträge: 259
Registriert: 12.04.2012 23:47
Wohnort: Hannover
Kontaktdaten:

Re: Ordnerstuktur abspeichern

Beitrag von kunstlust »

Ich würde einfach mal die CMD befragen:

Code: Alles auswählen

If OpenFile(1,"c:\temp\directtest.txt")
Else
  Debug("Kann Datei nicht erstellen")
  End
EndIf
dir =  RunProgram("cmd.exe", "/c dir /AD/o/b/s "+GetHomeDirectory(),"", #PB_Program_Open | #PB_Program_Read|#PB_Program_Hide )
If dir
  While ProgramRunning(dir)
    WriteStringN(1,ReadProgramString(dir))
    Debug ReadProgramString(dir)
  Wend
EndIf
CloseFile(1)

Antworten