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

Printed on: April 24, 2024 at 13:04 o'clock

Member: NetzwerkDude
NetzwerkDude Jan 03, 2019 at 13:08:21 (UTC)
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
Member: MarciMarc85
MarciMarc85 Jan 03, 2019 at 13:23:10 (UTC)
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 Jan 03, 2019 updated at 14:05:53 (UTC)
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)}  
Member: MarciMarc85
MarciMarc85 Jan 04, 2019 at 05:36:11 (UTC)
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 Jan 04, 2019 updated at 11:32:14 (UTC)
Goto Top
Na und, lässt sich ja beides in einer Batch verheiraten.