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-ID: 162488

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

Ausgedruckt am: 08.11.2024 um 03:11 Uhr

mathe172
mathe172 11.03.2011 um 15:37:02 Uhr
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
stuijg
stuijg 15.03.2011 um 09:23:53 Uhr
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
mathe172
mathe172 15.03.2011 um 12:13:14 Uhr
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
stuijg
stuijg 17.03.2011 um 12:56:04 Uhr
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