marcimarc85
Goto Top

Mit Batch script dateien vom heutigen Tag kopieren

Hallo,

Ich nutze ein Batch Script, was von mehreren Servern einer Umgebung alle Logfiles vom aktuellen Tag abholt und zipped. Die Logfiles rotieren jede Nacht. Bedeutet, dass das Script z.B. Script.log heißt, um Mitternacht in Script-20190103.log umbenannt wird und ein neues Script für den folgenden/aktuellen Tag angelegt wird, was wieder Script.log heißt usw. Das Umbennen des , teilweise mehreren GB großen Logfiles, dauert abe manchmal bis nach 24 Uhr und wurde somit am darauffolgenden Tag zuletzt geändert. wenn ich jetzt am darauffolgenden Tag die Logs per Script einsammel, so wird auch das Log vom Vortag wieder mit eingesammelt, was natürlich quatsch ist. Kann ich in folgendem Befehl etwas ändern, dass nur die Logfiles ohne den zusätzlichen Zeitstempel abggeholt werden?

pushd \\!_host!\d$
for /f "tokens=*" %%a in ('dir /b /s /a-d "\program\enterprise\log\*.*"')  do (  
  set "fileTime=%%~ta"  
  set "fileDate=!fileTime:~0,10!" & rem Dateidatum von Dateizeit abtrennen  
  if [!fileDate!]==[%nowDate%] (
  if [%%~xa] neq [*.zip] copy /b "%%a" "!_current_dir!" >nul 2>&1 && echo %%~nxa nach !_current_dir! kopiert... || echo %%~nxa Zugriff verweigert ^^!^^!  
    echo:
  )
)

ich hoffe, ihr versteht, was ich meine.

Die Zeile mit dem *.zip ist da drin, da auch zip-Dateien im Logpfad liegen, die nicht mit abgeholt werden sollen

Content-Key: 397085

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

Ausgedruckt am: 28.03.2024 um 08:03 Uhr

Mitglied: NetzwerkDude
NetzwerkDude 03.01.2019 um 14:08:21 Uhr
Goto Top
Mitternacht klingt immer nach Pain in the Ass wenn du in Tagen rechnest, daher die Hacker Lösung: Warum verschiebst du den Job nicht auf kurz vor / kurz nach Mitternacht?

PS: Umbenennen sollte nur ein paar ms dauern, egal wie groß ein File ist
Mitglied: MarciMarc85
MarciMarc85 03.01.2019 um 14:23:10 Uhr
Goto Top
Die Logfiles werden vom programm selbst erzeugt, bzw. umbenannt. Das passiert eben genau um 23:59:59 Uhr jeden Tag. Die Logdatei ist dann meist um 00:00 Uhr oder 00:01 Uhr zuletzt geändert. Nun lasse ich am Darauffolgenden Tag (also nach 00:00 Uhr ) die besagte Batch Datei laufen, die von allen Servern die Logs holt vonm aktuellen Tag und sie in ein Zip-Archiv pakt. Dieses Script läuft jeden Abend um 23:59:00 Uhr. Da nun aber die Datei vom Vortag mit Zeitstempel versehen wurde und quasi von windows nach 00:00 Uhr gespeichert wurde, ist sie somit auch am aktuellen Tag zuletzt geändert worden und wird daher auch mit gezipped, was sie aber nicht soll.
Mitglied: 137846
137846 03.01.2019 aktualisiert um 15:05:53 Uhr
Goto Top
Hatten wir eigentlich schon hier besprochen
Powershell letzte Backupdatei des Monats verschieben
Mit etwas Grips leicht anpassbar.
gci 'c:\Ordner\*.log' -File | ?{$_.LastwriteTime -gt (get-date).Date.AddMinutes(15)}  
Mitglied: MarciMarc85
MarciMarc85 04.01.2019 um 06:36:11 Uhr
Goto Top
Ja. darauf bin ich auch gekommen. Nur arbeite ich mit einem Batch_script und dein Befehl ist ein Powershell-Befehl.
Mitglied: 137846
137846 04.01.2019 aktualisiert um 12:32:14 Uhr
Goto Top
Na und, lässt sich ja beides in einer Batch verheiraten.