Globales Statuslogfile von mehreren Skripten bearbeiten
Robocopyjobs und deren Status in einer Datei immer abrufbar
Hallo,
folgende Situation. Ein Server verteilt per Batchskript/geplante Tasks Nachts auf viele andere Server.
Alle geplanten Tasks rufen ein Batchfile auf was mit 2 Parametern gesteuert wird.
Die Parameter sind einmal die IP Adressen und einmal die Namen der Server.
Der Aufruf ist als: C:\batch\sync.bat 10.0.0.5 Server_A >> C:\batch\sync\Server_A\Status.log
In diesem Skript sind mehrere Robocopyjobs (Synchronisationen, Kopiervorgänge und Abholvorgänge)
die hintereinander laufen.
Diese schreiben jeweils ein Log-File.
Sobald alle robocopy-jobs fertig sind lasse ich mir eine Zusammenfassung per blat.exe schicken.
Jetzt will ich das erweitern.
Komme ich jetzt morgens in Büro und will wissen ob noch was läuft muss ich folgendes machen:
RDP auf Server, Schauen welcher geplante Task läuft, In den Ordner gehen C:\batch\Server_A\Status.log, schauen welcher Robocopyjob läuft,
die Logdatei C:\batch\Server_A\copy_Projekte.log öffnen und schauen wo er hängt.
Das dauert mir zu lange und ist sehr umständlich.
Es soll möglich sein auf einen Blick zu sehen wo welcher geplante Task gerade ist.
Also mein Ziel:
Eine Datei (Status.txt) soll vorhanden sein. In der Sollte stehen:
Status Synchronisationen
Server_A aktuell:
Server_B aktuell:
Server_C aktuell:
Und hinter den Doppelpunkten soll vom jeweiligen geplanten Task stehen wo er gerade ist.
Ich hab mir das so vorgestellt, dass ich vor jedem robocopy Aufruf in der Batchdatei einfach ein Text erstellen lasse wie zum Beispiel:
echo "Ordner D:\Projekte wirdseit %datum% syncronisiert, Logfile C:\batch\Server_A\copy_Projekte.log" >> Und dieser Text soll dann nach "Server_A aktuell:" stehen
Sobald der Job vorbei ist soll anstelle "Ordner D:\Projekte wird seit %datum% syncronisiert, Logfile C:\batch\Server_A\copy_Projekte.log" dann
"Ordner D:\Aufgaben wird seit %datum% syncronisiert, Logfile C:\batch\Server_A\copy_Aufgaben.log" stehen
Zur Info:
Die Variable %datum% sieht bei mir so aus: %date:~-4,4%-%date:~-7,2%-%date:~0,2%-%time:~0,-9%%time:~3,-6%
Ich muss also in die Datei Status.txt zur stelle "Server_A aktuell:" und dann was anhängen. Das Problem wird wohl das überschreiben der Zeile sein.
Ist so was möglich? Also vielleicht den Rest der Zeile leeren wenn ein neuer Job anfängt und dann die neue Information schreiben?
Vielleicht ist das mal ne kniffligere Frage. Ich schaffs grad net.
Gruß Stuijg
Hallo,
folgende Situation. Ein Server verteilt per Batchskript/geplante Tasks Nachts auf viele andere Server.
Alle geplanten Tasks rufen ein Batchfile auf was mit 2 Parametern gesteuert wird.
Die Parameter sind einmal die IP Adressen und einmal die Namen der Server.
Der Aufruf ist als: C:\batch\sync.bat 10.0.0.5 Server_A >> C:\batch\sync\Server_A\Status.log
In diesem Skript sind mehrere Robocopyjobs (Synchronisationen, Kopiervorgänge und Abholvorgänge)
die hintereinander laufen.
Diese schreiben jeweils ein Log-File.
Sobald alle robocopy-jobs fertig sind lasse ich mir eine Zusammenfassung per blat.exe schicken.
Jetzt will ich das erweitern.
Komme ich jetzt morgens in Büro und will wissen ob noch was läuft muss ich folgendes machen:
RDP auf Server, Schauen welcher geplante Task läuft, In den Ordner gehen C:\batch\Server_A\Status.log, schauen welcher Robocopyjob läuft,
die Logdatei C:\batch\Server_A\copy_Projekte.log öffnen und schauen wo er hängt.
Das dauert mir zu lange und ist sehr umständlich.
Es soll möglich sein auf einen Blick zu sehen wo welcher geplante Task gerade ist.
Also mein Ziel:
Eine Datei (Status.txt) soll vorhanden sein. In der Sollte stehen:
Status Synchronisationen
Server_A aktuell:
Server_B aktuell:
Server_C aktuell:
Und hinter den Doppelpunkten soll vom jeweiligen geplanten Task stehen wo er gerade ist.
Ich hab mir das so vorgestellt, dass ich vor jedem robocopy Aufruf in der Batchdatei einfach ein Text erstellen lasse wie zum Beispiel:
echo "Ordner D:\Projekte wirdseit %datum% syncronisiert, Logfile C:\batch\Server_A\copy_Projekte.log" >> Und dieser Text soll dann nach "Server_A aktuell:" stehen
Sobald der Job vorbei ist soll anstelle "Ordner D:\Projekte wird seit %datum% syncronisiert, Logfile C:\batch\Server_A\copy_Projekte.log" dann
"Ordner D:\Aufgaben wird seit %datum% syncronisiert, Logfile C:\batch\Server_A\copy_Aufgaben.log" stehen
Zur Info:
Die Variable %datum% sieht bei mir so aus: %date:~-4,4%-%date:~-7,2%-%date:~0,2%-%time:~0,-9%%time:~3,-6%
Ich muss also in die Datei Status.txt zur stelle "Server_A aktuell:" und dann was anhängen. Das Problem wird wohl das überschreiben der Zeile sein.
Ist so was möglich? Also vielleicht den Rest der Zeile leeren wenn ein neuer Job anfängt und dann die neue Information schreiben?
Vielleicht ist das mal ne kniffligere Frage. Ich schaffs grad net.
Gruß Stuijg
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 162488
Url: https://administrator.de/contentid/162488
Ausgedruckt am: 22.11.2024 um 09:11 Uhr
4 Kommentare
Neuester Kommentar
Hallo stuijg!
Versuch mal etwas in die richtung:
Mathe172
Versuch mal etwas in die richtung:
set "Server=A"
set "Text=Text der hingeschrieben werden soll"
set "Status=C:\Status.txt"
REM ------------------
(for /f "usebackq delims=:" %%A in ("%Status%") do (if "%%A"=="Server_%Server% aktuell" (echo.%%A: %Text%) else (echo.%%A)))>"%Status%"
Mathe172