stuijg
Goto Top

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

Content-Key: 162488

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

Printed on: April 20, 2024 at 02:04 o'clock

Member: mathe172
mathe172 Mar 11, 2011 at 14:37:02 (UTC)
Goto Top
Hallo stuijg!

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
Member: stuijg
stuijg Mar 15, 2011 at 08:23:53 (UTC)
Goto Top
Hallo Mathe172,

hmm leider nicht so wirklich.
Weil so wie das aussieht schreibt er bei "else" doch jedesmal die Datei neu. Damit wären doch die alten Informationen weg.
Auch schreibt er die Zeile unterhalb aller Zeilen neu und fügt neue Informationen vom gleichen Parameter immer neu hinzu.
Ich hätte gern, dass er das vorhandene löscht und/oder überschreibt.

Ich glaube ich muss mit Zeilennummern oder Zeilen arbeiten. Also im Pseudocode:
Wenn der %%A gleich ist mit einem Text ist, dann spring eine Zeile runter und
lösche die Zeile und schreibe %Text%

Gruß stuijg
Member: mathe172
mathe172 Mar 15, 2011 at 11:13:14 (UTC)
Goto Top
Hallo stujig!

Theoretisch müsste es funktionieren, da die gesamte Ausgabe der Schleife auf einmal umgeleitet wird (siehe hier)

Mach es zur Sicherheit aber so wie hier (zweites Beispiel). Das sollte sich für deine Zwecke abändern lassen.

Mathe172
Member: stuijg
stuijg Mar 17, 2011 at 11:56:04 (UTC)
Goto Top
Danke,

das hilft mir. Une irgendiwe werde ich das Gefühl nicht los, dass alle Fragen die ich habe hier in diesem Forum schonmal gefragt wurde und
schon beantwortet wurden. Und zwar richtig richtig gut.

Gruß stuijg