Gelöst - Ordnerinhalt lesen

Anfängerfragen zum Programmieren mit PureBasic.
_v4
Beiträge: 26
Registriert: 16.11.2012 13:36

Gelöst - Ordnerinhalt lesen

Beitrag von _v4 »

Hallo,

wollte unter Windows den Inhalt eines Ordners lesen und dann die Dateinamen im Ordner nach der Reihe als String abarbeiten. Kann jemand sagen wie das grob geht?

Vielen Dank schonmal für die Hilfe!

__________________________________________________
Thread verschoben
Windows>Anfänger
03.12.2012
RSBasic
Zuletzt geändert von _v4 am 03.12.2012 20:29, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Ordnerinhalt lesen

Beitrag von ts-soft »

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
_v4
Beiträge: 26
Registriert: 16.11.2012 13:36

Re: Ordnerinhalt lesen

Beitrag von _v4 »

Danke für die schnelle Antwort. Hat mich soweit schon weiter gebracht. Habe auch gesehen, dass ich mit RenameFile() den Pfad der Datei ändern kann. Doch wie kann ich den Pfad von meiner aktuellen Datei abfragen?

Hier mal der Code soweit:

Code: Alles auswählen

OpenConsole()
If ExamineDirectory(0, Directory$, "*.jpg")  
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        
        ; Dateinamen lesen
        dateiname$ = DirectoryEntryName(0)
        
        ; Dateinamen am Unterstrich abschneiden und am Punkt
        ordnername$ = StringField(dateiname$,2,"_")
        ordnername$ = StringField(ordnername$,1,".")
        
        ; Dem Dateinamen ein s voranstellen
        ordnername$ = "s" + ordnername$
        
        ; Wenn Ordner nicht vorhanden, dann anlegen
        If (FileSize(ordnername$) <> -2)
           CreateDirectory(ordnername$)
        EndIf  
        
        
        
        ; Dateipfad ermitteln
        dateipfad_alt$ = GetPathPart(dateiname$)
        dateiname_alt$ = dateipfad_alt$ + "\" + dateiname$
        
        ; Neuen Dateipfad aufbauen
        dateipfad_neu$ = dateipfad_alt$ + "\" + ordnername$ + "\" + dateiname$
        
        ; Dateipfad umbenennen
        RenameFile(dateiname_alt$, dateiname_neu$)
        
        ; Ausgabe
        PrintN("Datei: " + dateiname$ + " verschoben " + dateipfad_alt$ + " " + dateipfad_neu$)
        
      EndIf
      
      
    Wend
    FinishDirectory(0)
  EndIf
  
Input()  
CloseConsole()

Zuletzt geändert von _v4 am 03.12.2012 17:53, insgesamt 1-mal geändert.
_v4
Beiträge: 26
Registriert: 16.11.2012 13:36

Re: Ordnerinhalt lesen

Beitrag von _v4 »

Gut. Hat sich erledigt. Hatte auch noch nen kleinen Fehler drin. Hab jetzt dafür den Dateipfad vom Programm verwendet, das kommt dann sowieso immer ins Projektverzeichnis. Hier der fertige Code:

Code: Alles auswählen

OpenConsole()
If ExamineDirectory(0, Directory$, "*.jpg")  
    While NextDirectoryEntry(0)
      If DirectoryEntryType(0) = #PB_DirectoryEntry_File
        
        ; Dateinamen lesen
        dateiname$ = DirectoryEntryName(0)
        
        ; Dateinamen am Unterstrich abschneiden und am Punkt
        ordnername$ = StringField(dateiname$, 2, "_")
        ordnername$ = StringField(ordnername$, 1, ".")
        
        ; Dem Dateinamen ein s voranstellen
        ordnername$ = "s" + ordnername$
        
        ; Wenn Ordner nicht vorhanden, dann anlegen
        If (FileSize(ordnername$) <> -2)
           CreateDirectory(ordnername$)
        EndIf  
        
        ; Dateipfad ermitteln
        dateipfad_alt$ = GetPathPart(ProgramFilename())
        dateiname_alt$ = dateipfad_alt$ + dateiname$
        
        ; Neuen Dateipfad aufbauen
        dateiname_neu$ = dateipfad_alt$ + ordnername$ + "\" + dateiname$
        
        ; Dateipfad umbenennen
        RenameFile(dateiname_alt$, dateiname_neu$)
        
        ; Ausgabe
        PrintN("Datei: " + dateiname$ + " verschoben ")
        
      EndIf 
    Wend
    
    FinishDirectory(0)
    PrintN("Fertig!")
    
  EndIf
  
Input()  
CloseConsole()
Antworten