Seite 1 von 1

File Date geht nicht

Verfasst: 23.07.2010 09:28
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()

Re: File Date geht nicht

Verfasst: 23.07.2010 10:00
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ß

Re: File Date geht nicht

Verfasst: 23.07.2010 10:11
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

Re: File Date geht nicht

Verfasst: 23.07.2010 10:35
von FrW
Hallo Fitsch,

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

Gruß

Re: File Date geht nicht

Verfasst: 23.07.2010 10:47
von Fitsch
nein Das kommentar hatte ich nur dahin gemacht damit es nicht Das Freitag an den in der ini eingetragenen Pfad anhängt...

Re: File Date geht nicht

Verfasst: 23.07.2010 11:40
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ß

Re: File Date geht nicht

Verfasst: 23.07.2010 12:20
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+

Re: File Date geht nicht

Verfasst: 12.08.2010 12:22
von Fitsch
Soory das ich so Spät antworte war jetzt knapp 3 wochen im Urlaub ^^

Danke für die Tipps :)