hansis1
Goto Top

Suchwert in einer Variable speichern

Hallo!
Wieder mal ein Batch-Problem:

ich habe eine Logdatei, in der ich nach dem Wort Fehler suchen möchte. Und das Gefundene würde ich gerne in eine Variable speichern.
Also in dieser Art:
%Fehleranalyse% = TYPE "C:\temp\LOG.txt" | find /i "Fehler:"

Es wird mir zwar der gefundene Fehler auf der Shell ausgegeben, aber ich möchte diese Ausgabe gerne in einer Variablen für die weitere Verarbeitung zwischenspeichern.

Wie kann man das am besten lösen?

Danke
Hansi

Content-Key: 38090

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

Printed on: April 19, 2024 at 14:04 o'clock

Member: MartinSchmid
MartinSchmid Aug 16, 2006 at 09:09:08 (UTC)
Goto Top
Hi Hansi,

du könntest das Ergebnis deines Filters in eine Datei speichern

TYPE "C:\temp\LOG.txt" | find /i "Fehler:" > dateiname

und dann mit for (siehe Hilfe für genaue Syntax) diese Datei im Bedarfsfall auslesen bzw. gleich die Variablen damit füllen und die Datei dann wieder löschen. In der Hilfe vom Windows sind da ganz brauchbare Beispiele enthalten, die den Umgang mit for gut beschreiben.

Sonst fällt mir dazu auch nix ein.

mfg Martin
Member: hansis1
hansis1 Aug 16, 2006 at 09:16:33 (UTC)
Goto Top
Hallo Martin!

Danke, auf diese Idee bin ich auch schon gekommen.

Es ist so, ich möchte dann diese Variable überprüfen, ob etwas drinnensteht.

Also in diese Richtung:

IF "Fehleranalyse"=="" (
Befehl 1
) ELSE (
Befehl 2
)

Hansi
Member: MartinSchmid
MartinSchmid Aug 16, 2006 at 09:20:06 (UTC)
Goto Top
Ich versuch mal schnell was zusammenzubasteln.
Member: hansis1
hansis1 Aug 16, 2006 at 09:22:26 (UTC)
Goto Top
Super Danke!
Das nenn ich Service.

lg
Hansi
Member: Biber
Biber Aug 16, 2006 at 09:42:43 (UTC)
Goto Top
Moin hansis1,

derweil kann ich ja alternativ etwas dazu schreiben.

Du könntest natürlich diese Anforderung so lösen:
 (find /i "Fehler:" C:\temp\LOG.txt>nul) && set "FehlerFlag=Y"  
IF defined FehlerFlag (
goto machDies
) ELSE (
goto MachDas
)
...

...aber wozu dann überhaupt eine Variable??
 (find /i "Fehler:" C:\temp\LOG.txt>nul) && goto MachDies  
goto MachDas
...
...das reicht doch vollkommen.

Gruß
Biber,
der mehr simple Bätche bevorzugt
Member: MartinSchmid
MartinSchmid Aug 16, 2006 at 09:59:48 (UTC)
Goto Top
hier mal ne Lösung über for:

zuerst Daten in eine Datei schreiben
echo "text" > daten.dat

dann über for wieder auslesen und als Umgebungsvariable setzen
for /F "tokens=1" %%i in (daten.dat) do set env=%%i

dann mit der Variablen was machen, z.B. ausgeben
echo %env%

Variable und Datei wieder löschen
set env=
del daten.dat


--> damit kannst du den Inhalt der Variablen weiter auswerten, die Lösung von Biber weiter unten könnte für deine Zwecke aber ausreichend sein und ist viel kürzer und übersichtlicher als meine.

mfg Martin
Member: hansis1
hansis1 Aug 16, 2006 at 14:28:56 (UTC)
Goto Top
Hallo!

Vielen Dank an alle. Habe es mit der Lösung von Biber gemacht.

Danke
Hansi