File Date geht nicht

Für allgemeine Fragen zur Programmierung mit PureBasic.
Fitsch
Beiträge: 14
Registriert: 09.07.2009 15:29
Computerausstattung: Windows 7 Professional 64Bit | AMD 5600+ @ 3.10 GHz | 5GB RAM | Nvidia Gf 9800 GT
Wohnort: Schwalmstadt
Kontaktdaten:

File Date geht nicht

Beitrag von Fitsch »

Hallöchen :)

da währe ich mal wieder mit einem kleinen problemchen.
Und zwar wolte mein chef ein kleines Programm haben das Dateien in einem Ordner Löscht die älter als x Tage sind.
Gesgagt getan das hat auch soweit funktioniert bis auf heute morgen seit heute morgen bekomme ich kein einziges Datum einer Datei zurück...
Habe es auch schon auf mehreren Rechnern versucht leider nichts :(

Selbst wenn ich eine Console öffne und nur den Dateinamen und Das Datum angezeigt bekommen möchte geht es nicht
habe ich wieder was übersehen und es hat nur auf gut Glück funktioniert ?

Code: Alles auswählen

OpenConsole()

ExamineDirectory(0,"C:\", "*.*")

While NextDirectoryEntry(0)
  PrintN(DirectoryEntryName(0) + " " + Str(GetFileDate(DirectoryEntryName(0),#PB_Date_Created)))
  Delay(2000)           
Wend

CloseConsole()
FrW
Beiträge: 45
Registriert: 08.11.2004 13:37

Re: File Date geht nicht

Beitrag von FrW »

Hallo Fitsch,

warum es nicht geht kann ich Dir nicht sagen.
Aber probiere es mal mit

Code: Alles auswählen

OpenConsole()

ExamineDirectory(0,"C:\", "*.*")
While NextDirectoryEntry(0)
  If DirectoryEntryType(0) = #PB_DirectoryEntry_File
    PrintN(DirectoryEntryName(0) + " - Datum : " + FormatDate("%dd.%mm.%yyyy", DirectoryEntryDate(0, #PB_Date_Created)))
  EndIf
  Delay(100)           
Wend
CloseConsole()
Gruß
Fitsch
Beiträge: 14
Registriert: 09.07.2009 15:29
Computerausstattung: Windows 7 Professional 64Bit | AMD 5600+ @ 3.10 GHz | 5GB RAM | Nvidia Gf 9800 GT
Wohnort: Schwalmstadt
Kontaktdaten:

Re: File Date geht nicht

Beitrag von Fitsch »

Danke so geht es, warum es auch immer gestern noch funktionierte...
Ich werde es mal in meinen code übernehmen bzw. anpassen

Danke dir nochmals

Edit:
Mhh Leider geht es in meine Proggi nicht, poste jetzt mal meinen Code

Code: Alles auswählen

;Laden der Einstellungen
OpenPreferences("settings.ini")
  PreferenceGroup("Global")
    Global Imagepath$ = ReadPreferenceString("Imagepath", "")
    Global Lifetime.i =  Val(ReadPreferenceString("Lifetime", "")) 
    ;Tage in Sekunden umrechnen
    Lifetime.i = (Lifetime * 24 * 60 * 60)   
ClosePreferences()




;-=Main=-
OpenConsole()

Select DayOfWeek(Date())
  Case 0
  Imagepath$ = Imagepath$ + "Sonntag"
  Tag$  = "Sonntag"
  
  Case 1
  Imagepath$ = Imagepath$ + "Montag"
  Tag$ = "Montag"
  
  Case 2
  Imagepath$ = Imagepath$ + "Dienstag"
  Tag$ = "Dienstag"
  
  Case 3
  Imagepath$ = Imagepath$ + "Mittwoch"
  Tag$ = "Mittwoch"
  
  Case 4
  Imagepath$ = Imagepath$ + "Donnerstag"
  Tag$ = "Donnerstag"
  
  Case 5
  Imagepath$ = Imagepath$ ;+ "Freitag"
  Tag$ = "Freitag"
  
  Case 6
  Imagepath$ = Imagepath$ + "Samstag"
  Tag$ = "Samstag"
  
  Default
  End
EndSelect



ConsoleTitle("Filechecker V.0.2 " + Tag$)
PrintN(Imagepath$)
  ExamineDirectory(0, Imagepath$,"*.*")
  While NextDirectoryEntry(0)
    ConsoleColor(7,0)
  
    If DirectoryEntryType(0) = #PB_DirectoryEntry_File
    
      ;Dateidatum (Unix Timestamp)
      File_date$ = Str(DirectoryEntryDate(0, #PB_Date_Created))
      PrintN(DirectoryEntryName(0) + "  " + FormatDate("%dd.%mm.%yyyy",File_date))
      
      If(Date() - File_date) > Lifetime
        
        If DirectoryEntryName(0) = ".." Or DirectoryEntryName(0) = "."
          ConsoleColor(10,0)
          PrintN("Datei wurde Ausgelasen")
        Else
          ConsoleColor(12,0)
          ;DeleteFile(DirectoryEntryName(0))
        
         If DeleteFile(DirectoryEntryName(0)) = 0
            PrintN("Datei konnte nicht Gelöscht werden")
         Else
            PrintN("Datei wurde Gelöscht!!!")
          EndIf
        EndIf
      
       Else
        ConsoleColor(10,0)
        PrintN("Datei wurde Ausgelasen")
      EndIf
      
      Delay(2000)
    EndIf
    
   Wend
  FinishDirectory(0)

  
  ;Snapshot Starten
  ;ConsoleColor(7,0)
;   RunProgram("snapshot", " C: C:\"+Tag$ +"\"+Tag$ +"_"+ FormatDate("%dd.%mm.%yyyy",Date())+".sna -R", "", #PB_Program_Open)
;   CloseProgram(snapshot)
  
Delay(10000)

CloseConsole()
Dazu die settings.ini

Code: Alles auswählen

[Global]
Imagepath = C:\
Lifetime = 7
FrW
Beiträge: 45
Registriert: 08.11.2004 13:37

Re: File Date geht nicht

Beitrag von FrW »

Hallo Fitsch,

warum ist bei Case 5 (Freitag) ein Kommentar?
Geht es vielleicht deshalb nicht?

Gruß
Fitsch
Beiträge: 14
Registriert: 09.07.2009 15:29
Computerausstattung: Windows 7 Professional 64Bit | AMD 5600+ @ 3.10 GHz | 5GB RAM | Nvidia Gf 9800 GT
Wohnort: Schwalmstadt
Kontaktdaten:

Re: File Date geht nicht

Beitrag von Fitsch »

nein Das kommentar hatte ich nur dahin gemacht damit es nicht Das Freitag an den in der ini eingetragenen Pfad anhängt...
FrW
Beiträge: 45
Registriert: 08.11.2004 13:37

Re: File Date geht nicht

Beitrag von FrW »

Hallo Fitsch,

a) Du solltest EnableExplicit benutzen.
File_date und File_date$ passen nicht zusammen.

b) DeleteFile() benötigt eine Pfadangabe (war zumindest bei mir so) !! Achtung Directory richtig setzen !!


Gruß
Christian+
Beiträge: 213
Registriert: 13.07.2008 10:05
Computerausstattung: Windows 8.1 Pro
AMD Phenom II X4 955 @ 3.2 GHz
4GB RAM
NVIDIA GeForce GTX 660

Re: File Date geht nicht

Beitrag von Christian+ »

Wie schon gesagt wurde nutze EnableExplicit dann findest du Fehler viel leichter.
Bei DirectoryEntryDate hast du mit File_date und File_date$ zwei verschiedene variablen verwendet da du da eigentlich gar nicht mit Strings arbeiten musst würde ich das so schreiben:

Code: Alles auswählen

File_date = DirectoryEntryDate(0, #PB_Date_Created)
PrintN(DirectoryEntryName(0) + "  " + FormatDate("%dd.%mm.%yyyy",File_date))
Bei DeleteFile brauchst du auch einen Pfad sonst wird die Datei im aktuellen Verzeichnis gesucht.

Code: Alles auswählen

If DeleteFile(Imagepath$ + DirectoryEntryName(0)) = 0
Dein Select Case für den Tag kannst du übrigens auch viel einfacher schreiben:

Code: Alles auswählen

Tag$  = StringField("Sonntag|Montag|Dienstag|Mittwoch|Donnerstag|Freitag|Samstag", DayOfWeek(Date())+1, "|")
Imagepath$ = Imagepath$ + Tag$ + "\"
Und für deine ini Datei du kannst statt Val(ReadPreferenceString("Lifetime", "")) auch gleich den ReadPreferenceLong() Befehl verwenden.

mfg Christian+
Windows 8.1 Pro 64Bit | AMD Phenom II X4 955 @ 3.2 GHz | 4GB RAM | NVIDIA GeForce GTX 660
Fitsch
Beiträge: 14
Registriert: 09.07.2009 15:29
Computerausstattung: Windows 7 Professional 64Bit | AMD 5600+ @ 3.10 GHz | 5GB RAM | Nvidia Gf 9800 GT
Wohnort: Schwalmstadt
Kontaktdaten:

Re: File Date geht nicht

Beitrag von Fitsch »

Soory das ich so Spät antworte war jetzt knapp 3 wochen im Urlaub ^^

Danke für die Tipps :)
Antworten