tony-mh
Goto Top

NUR das Datum einer Datei auslesen

Habe mich jetzt mehrere Stunden mit dem Suchen beschäftigt und leider zwar immer mal was gefunden, aber nicht das was ich brauche.
Es ist wahrscheinlich sehr simple, aber ich komme einfach nicht zur Lösung.

Ich möchte eine Batchdatei erstellen, die nur dann ausgeführt wird, wenn eine bestimmte Datei älte als 4 Wochen ist.
Ist das mit einer Batchdatei überhaupt möglich?

danke schon mal für Eure Hilfe

Content-ID: 85536

Url: https://administrator.de/contentid/85536

Ausgedruckt am: 22.11.2024 um 11:11 Uhr

bastla
bastla 15.04.2008 um 12:52:16 Uhr
Goto Top
Hallo tony-mh und willkommen im Forum!

Ist das mit einer Batchdatei überhaupt möglich?
Grundsätzlich ja - allerdings, wenn's nur Batch sein soll, eher mühsam.

Leichter geht's unter Verwendung von (temporärem) VBScript:
@echo off & setlocal
set "Datei=D:\Timestamp.txt"  

:: Script erzeugen
set "DD=%temp%\GetDateDiff.vbs"  
echo Set args=WScript.Arguments:If args.Count^>1 Then:Bis=args(1):Else:Bis=Date:End If:WScript.Echo DateDiff("d",args(0),Bis)>%DD%  

:: Dateidatum auslesen
for %%i in ("%Datei%") do set "Von=%%~ti"  

:: Tagedifferenz berechnen
for /f %%i in ('cscript //nologo %DD% "%Von%"') do set /a "Alter=%%i"  

:: Auswertung
if %Alter% leq 28 goto :eof
echo Mehr als 4 Wochen ...
Wenn Du in der "for /f"-Zeiile nach "%Von%" eine Leerstelle und ein weiteres Datum angibst, wird die Differenz zwischen diesen beiden Daten berechnet, ansonsten wird das in %Von% enthaltene Datum mit dem heutigen verglichen. In beiden Fällen steht anschließend in %Alter% das Alter in Tagen.

Falls das Alter der Datei unter 4 Wochen liegt, wird der Batch beendet, ansonsten können anstelle der als Demo verwendeten Ausgabe "Mehr als 4 Wochen" beliebige Befehle folgen.

Grüße
bastla
Biber
Biber 15.04.2008 um 13:03:11 Uhr
Goto Top
Moin toby-mh,

willkommen auch von mir.

lesbarer wird es mit dem Utility WasFile.exe von Horst Schaeffer (siehe Link im Bereich Batch & Shell).

Damit reduziert sich das Handwerkliche auf:
....
Wasfile D:\EineDatei.xyz BEFORE Today-30 && TuWasDuNachEinemMonatTunMusst.bat

Grüße
Biber
tony-mh
tony-mh 15.04.2008 um 15:12:24 Uhr
Goto Top
Danke danke... stimmt mit WSH geht es um einiges leichter, habe es nach euren starthilfen geschafft.... zwar bisschen anders und glaube ich auch bisschen einfacher face-smile

Danke trotzdem schonmal
'*** Log Datei angeben  
set fs = CreateObject("Scripting.FileSystemObject")  

if not fs.fileExists("C:\tmp\Inventory.txt") then  
set logbuch = fs.opentextfile("C:\tmp\Inventory.txt", 8, true,0)  
logbuch.writeline now
logbuch.close

End if

Set f1 = fs.GetFile("C:\tmp\Inventory.txt")  

'*** aktuelles Datum bestimmen  
akt_datum = (now)

          
          '*** Erstelldatum auslesen, und in Datum und Uhrzeit zerlegen  
          Erstelldatum = f1.DateLastModified
          
          '*** Überprüfen ob Zeit vergangen sind    
          
          diff = DateDiff("s",Erstelldatum, akt_datum)  
          If diff>20 Then
          
               '***Inventory Script ausführen  
               
              MsgBox "hier kommt das Script rein"  
              
              '***Eintrag in die Logdatei, wann das Script ausgeführt wurde  
              set logbuch = fs.opentextfile("C:\tmp\Inventory.txt", 8, true,0)  
	      logbuch.writeline now
              logbuch.close
              
              
               
     End if

[Edit Biber] Als formatiert. [/Edit]