Script um 2 Werte auszulesen
Hallo,
Da ich nur wenig Erfahrung in Scripten hab, bräuchte ich eure Hilfe.
Ich möchte aus einer log Datei 2 Werte auslesen.
z.B. Ein Backup log wo Erfolgreich und der Servername gesucht wird.
und es wieder mit
IF %errorlevel%==0 echo alles OK
IF %errorlevel%==1 echo Fehler aufgetreten
@ExIT %errorlevel%
ausgibt.
Hab es bis jetzt nur mit einem Wert geschaft so ein Script zu erstellen. hier wäre dieses Script.
Hoffe es kann mir einer helfen.
Danke im vorraus.
gruß
[Edit Biber] Codeformatierung, was sonst.. [/Edit]
Da ich nur wenig Erfahrung in Scripten hab, bräuchte ich eure Hilfe.
Ich möchte aus einer log Datei 2 Werte auslesen.
z.B. Ein Backup log wo Erfolgreich und der Servername gesucht wird.
und es wieder mit
IF %errorlevel%==0 echo alles OK
IF %errorlevel%==1 echo Fehler aufgetreten
@ExIT %errorlevel%
ausgibt.
Hab es bis jetzt nur mit einem Wert geschaft so ein Script zu erstellen. hier wäre dieses Script.
Set Wss=WScript.CreateObject("WScript.Shell")
Set Fso=WScript.CreateObject("Scripting.FileSystemObject")
Datei="c:\test\backuplog.txt"
Text="Erfolgreich"
if fso.FileExists(Datei) = false then
msg = "Die Datei '" & Datei & "' wurde nicht gefunden!"
Wscript.Echo msg
WScript.Quit(1)
end if
Set File=Fso.OpenTextFile(Datei,1,true)
i=1
Do until File.AtEndOfStream
ReDim Preserve Zeile(i)
Zeile(i)=File.ReadLine
i=i+1
Loop
Ende=i-1
File.Close
Set File=Nothing
Zahl=0
For i=1 to Ende
k=1
Do until k>Len(Zeile(i))-Len(Text)+1
If Mid(Zeile(i),k,Len(Text))=Text then
Zahl=Zahl+1
End If
k=k+1
Loop
Next
If Zahl=0 then
msg = "Der Text '" & Text & "' wurde nicht gefunden"
Wscript.Echo msg
WScript.Quit(1)
else
msg = "Der Text '" & Text & "' wurde " & Zahl & "mal gefunden"
Wscript.Echo msg
WScript.Quit(0)
end if
Hoffe es kann mir einer helfen.
Danke im vorraus.
gruß
[Edit Biber] Codeformatierung, was sonst.. [/Edit]
Please also mark the comments that contributed to the solution of the article
Content-Key: 193314
Url: https://administrator.de/contentid/193314
Printed on: April 19, 2024 at 13:04 o'clock
13 Comments
Latest comment
Hallo rock12345!
Es wäre sinnvoll, den entsprechenden Teil des Logs zu posten und auch genau die gewünschte Ausgabe darzustellen (wie oft ein Text gefunden wurde, dürfte letztlich eher nicht relevant sein).
Vermutlich wird es auch gar nicht nötig sein, VBS zu verwenden, sondern es sollte "
Grüße
bastla
P.S.: "Code" lässt sich hier im Forum auch besser lesbar formatieren (auch im Nachhinein ) ...
Es wäre sinnvoll, den entsprechenden Teil des Logs zu posten und auch genau die gewünschte Ausgabe darzustellen (wie oft ein Text gefunden wurde, dürfte letztlich eher nicht relevant sein).
Vermutlich wird es auch gar nicht nötig sein, VBS zu verwenden, sondern es sollte "
findstr
" in einem Batch genügen ...Grüße
bastla
P.S.: "Code" lässt sich hier im Forum auch besser lesbar formatieren (auch im Nachhinein ) ...
Hallo rock12345!
Grüße
bastla
Mein Ziel ist in GFI MAX RemoteManagment eine Acronis vmprotect log Datei auszuwerten.
Die Information ist zwar sicherlich für Dich wichtig, hilft aber mir nicht dabei, Dir zu helfen - daher nochmals die Frage: Wie sieht das Log aus? Und wie soll der Servername berücksichtigt werden?Grüße
bastla
[OT] Moin bastla,
Ich werde mir für mein Standard-"[Edit Biber]" (s.o.) wohl auch bald was auf einen unbenutzten Hotkey legen..
Grüße
Biber
[/OT]
Zitat von @bastla:
P.S.: "Code" lässt sich hier im Forum auch besser lesbar formatieren (auch im Nachhinein ) ...
Deine neue Signatur ist auch hybsch und praktisch.P.S.: "Code" lässt sich hier im Forum auch besser lesbar formatieren (auch im Nachhinein ) ...
Ich werde mir für mein Standard-"[Edit Biber]" (s.o.) wohl auch bald was auf einen unbenutzten Hotkey legen..
Grüße
Biber
[/OT]
[OT] Hallo Biber!
BTW: Früher war ja alles besser - jedenfalls konnte ich da noch direkt auf "Quellcode, Code oder HTML Snippets" verlinken, was mit Formatting instructions in the posts leider nicht mehr funktioniert ...
Grüße
bastla
[/OT]
BTW: Früher war ja alles besser - jedenfalls konnte ich da noch direkt auf "Quellcode, Code oder HTML Snippets" verlinken, was mit Formatting instructions in the posts leider nicht mehr funktioniert ...
Grüße
bastla
[/OT]
Hallo 12345!
Schon besser - aber ich weiß noch immer nicht, wie nach dem Server gesucht bzw der Server ausgegeben werden soll ...
Wenn ich Deinen Ansatz oben richtig interpretiere, sollte der Errorlevel ja einfach vom Vorhandensein des Strings "Operation Erfolgreich" (im Beispiel in Zeile 135) abhängig gemacht werden können - in Batch eine Zeile der Art
- auf Wunsch auch mit direkter Weiterverarbeitung:
Grüße
bastla
Schon besser - aber ich weiß noch immer nicht, wie nach dem Server gesucht bzw der Server ausgegeben werden soll ...
Wenn ich Deinen Ansatz oben richtig interpretiere, sollte der Errorlevel ja einfach vom Vorhandensein des Strings "Operation Erfolgreich" (im Beispiel in Zeile 135) abhängig gemacht werden können - in Batch eine Zeile der Art
findstr /c:"Operation Erfolgreich" "c:\test\backuplog.txt">nul
findstr /c:"Operation Erfolgreich" "c:\test\backuplog.txt">nul && (
echo Alles OK
) || (
echo Fehler aufgetreten
)
bastla
Hallo rock12345!
Wenn übrigens der von mir mit "
als letzte Zeilen des Batches verwenden, um den Errorlevel weiterzugeben ...
Grüße
bastla
hoffe du weißt jetzt was ich genau meine
Weiß ich nicht - ich weiß nicht, wo der Servername steht (und mag es auch nicht in den 136 Zeilen suchen, wenn Du mir doch hoffentlich die relevante Stelle - irgendwann - nennen kannst), und ich weiß nicht, in welcher Form Du den Servernamen dann weitergeben kannst - ihn zunächst in eine Variable zu bekommen sollte, bei gleich bleibender Struktur der Logdatei, kein großes Problem sein ...Wenn übrigens der von mir mit "
findstr
" verwendete Suchbegriff so OK ist, kannst Du natürlich einfachfindstr /c:"Operation Erfolgreich" "c:\test\backuplog.txt">nul
exit %errorlevel%
Grüße
bastla
Hallo rock12345!
Wenn es nur eine Zeile gibt, die auf ".TIB" (oder auch ".tib") endet, kannst Du aus der Datei den Servernamen so herausfiltern:
Trotzdem sehe ich noch nicht wirklich, wie der Ablauf sein soll - Dein Script würde zunächst alle Dateien in "C:\Backup" und in allen Unterordnern durchgehen und nur, wenn in einer Datei "Operation Erfolgreich" gefunden wurde, diese Datei weiter nach "Server_12.tib" durchsuchen (der Schalter "
Der am Ende übergebenen Errorlevel würde dann schließlich unter "Zufallsprodukt" fallen - also frage ich mich (bzw besser Dich) nochmals, was konkret das Ziel sein soll (auch im Hinblick darauf, dass es offenbar mehrere/viele Dateien gibt, die zu betrachten / durchsuchen sind)?
Grüße
bastla
Wenn es nur eine Zeile gibt, die auf ".TIB" (oder auch ".tib") endet, kannst Du aus der Datei den Servernamen so herausfiltern:
for /f "delims=" %%i in ('findstr /ie "\.tib" "%%A"') do set "Server=%%~ni"
/m
" passt übrigens auch nicht dazu) ...Der am Ende übergebenen Errorlevel würde dann schließlich unter "Zufallsprodukt" fallen - also frage ich mich (bzw besser Dich) nochmals, was konkret das Ziel sein soll (auch im Hinblick darauf, dass es offenbar mehrere/viele Dateien gibt, die zu betrachten / durchsuchen sind)?
Grüße
bastla
Hallo rock12345!
Eine (einzige) Log-Datei?
Ansonsten: Ich habe weder "acronis vmprotect" noch "GFI Max Dashboard" zur Verfügung, um Dein Vorhaben nachvollziehen zu können, und bin daher auf Deine Beschreibungen / Beispieldaten angewiesen ...
... was bisher eher bedeutet, dass ich raten muss. Wenn daher zB das Ziel wäre, die für den "Server_12" erstellte Log-Datei (Typ "txt") zu finden und zu prüfen, ob diese "Operation Erfolgreich" enthält, sähe das (ungetestet) etwa so aus:
Wenn keine Datei gefunden wird oder keine der gefundenen Dateien "Operation Erfolgreich" enthält, bleibt der Wert der Variablen
Damit wäre aber jetzt natürlich einmal nur ein (bestimmter) Server abgehandelt ...
Grüße
bastla
Eine (einzige) Log-Datei?
Ansonsten: Ich habe weder "acronis vmprotect" noch "GFI Max Dashboard" zur Verfügung, um Dein Vorhaben nachvollziehen zu können, und bin daher auf Deine Beschreibungen / Beispieldaten angewiesen ...
... was bisher eher bedeutet, dass ich raten muss. Wenn daher zB das Ziel wäre, die für den "Server_12" erstellte Log-Datei (Typ "txt") zu finden und zu prüfen, ob diese "Operation Erfolgreich" enthält, sähe das (ungetestet) etwa so aus:
@echo off & setlocal
set "SOURCE=C:\Backup"
set "Error=1"
for /f "delims=" %%i in ('findstr /ims "Server_12.tib" "%SOURCE%\*.txt"') do findstr /i "Operation Erfolgreich" %%i>NUL && set "Error=0"
exit /b %Error%
%Error%
auf 1 - anderenfalls wird er auf 0 gesetzt. Dieser Wert wird dann als Rückgabewert des Batches verwendet.Damit wäre aber jetzt natürlich einmal nur ein (bestimmter) Server abgehandelt ...
Grüße
bastla