gismo82
Goto Top

Sonderzeichen in Batch-Variable maskieren

Hi...

ich habe folgendes Problem. Ich möchte ein Error-Log des Microsoft Logparser mittels Batchscript schreiben.

Zuerst führe ich den Logparser aus und leite stderr in eine temporäre Datei um.
LogParser -i:FS -o:CSV -headers:ON -oDQuotes:ON file:V:\reportingTool\SQL\logparser.sql  2> %TEMP%\errorLOGPARSER.txt
In der Datei steht folgender, beispielhafter Fehlertext:
Cannot open <from-entity>: Error searching for files in folder D:\test\pfad: Das System kann den angegebenen Pfad nicht  finden.
Dieser Text soll in eine Variable umgeleitet werden:
set /p errorVar=<%TEMP%\errorLOGPARSER.txt
Wenn ich nun diese Variable ausgeben will (echo %errorVar%) dann kommt folgende Fehlermeldung
Cannot open  Error searching for files in folder  D:\test\pfad: Das System kann den angegebenen Pfad nicht  finden. 0<from-entity 1>:
Das System kann die angegebene Datei nicht finden.

Wie schaffe ich es, die Sonderzeichen "<" und ">" bzw. beliebige andere Sonderzeichen zu maskieren?


Gruß Andreas

Content-Key: 127930

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

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

Member: bastla
bastla Oct 26, 2009 at 20:13:40 (UTC)
Goto Top
Hallo gismo82!

Du könntest natürlich die Ausgabe unter Anführungszeichen vornehmen, also:
echo "%errorVar%"
Für das Maskieren brauchst Du aber auch nur 2 Zeilen mehr:
set "errorVar=%errorVar:<=^<%"
set "errorVar=%errorVar:>=^>%"
Anstelle der maskierten "<" und ">" kannst Du auch Ersatzzeichen verwenden, etwa:
set "errorVar=%errorVar:<=[%"
set "errorVar=%errorVar:>=]%"
Grüße
bastla
Member: gismo82
gismo82 Oct 27, 2009 at 07:37:55 (UTC)
Goto Top
Hi Bastia,

super Sache...dankeschön. Das hat einwandfrei geklappt.


Gruß Andreas
Member: Artemis
Artemis Jan 28, 2021 at 21:52:29 (UTC)
Goto Top
Hallo!

Beitrag alt, aber für meine Frage optimal:
Was aber mache ich, wenn das Gleichheitszeichen selbst "=" Bestandteil der Variablen ist?
Denn ich will per Skript eine INI-Datei konfigurieren, und da kommt ja das "=" in jeder Zeile vor.

Also, aus:
AutoZoom=1
soll:
AutoZoom=0
werden.

Ich zitiere jetzt aus einer Antwort von Dir, lieber bastla, vom
22.07.2008, aktualisiert 18.10.2012, 17448 Aufrufe, 13 Kommentare

set "Datei=D:\test.txt"
set "Von=Datei C:\temp\"
set "Nach="
...usw...

Das hat mir schon oft weitergeholfen, vor allem dann das ...usw... face-wink
Jetzt schreibe ich also:

set "Von=AutoZoom=1"
set "Nach=AutoZoom=0"

aber da kommt nicht das Richtige raus.
Lasse ich probehalber das "=" weg, klappt es.
Sämtliche Versuche mit zusätzlichen = % " in allen möglichen Varienten schlugen fehl.

Maskieren, wie hier beschrieben?
Stell ich mir deshalb schwierig vor, weil ja das "=" derart essentiell in jeder Formulierung ist.

Wie geht das nun, eine INI per Skript konfigurieren?

Viele Grüße,
Artemis
Member: bastla
bastla Jan 31, 2021 at 16:59:56 (UTC)
Goto Top
Hallo Artemis,

würde ich (wenn überhaupt noch in Batch) allenfalls mit temporärem VBS lösen; vielleicht hilft aber auch eines der vielen Tools von Horst Schaeffer: IniFile

Grüße
bastla
Member: Artemis
Artemis Feb 01, 2021 at 00:22:23 (UTC)
Goto Top
Hallo bastla,

ja weiß ich, habs inzwischen mit VBS gemacht.
Sehr gut geht das auch mit change von Uwe Sieber:
https://www.uwe-sieber.de/util.html

Es hätte mich halt interessiert, wie das im Standardskript geht, einfach der Klarheit und Durchgängigkeit halber.
Übersichtlich, Sportsgeist, sowenig Meltingpot wie möglich.

Aber anscheinend war mein Gefühl richtig: Trivial ist das wohl nicht im DOS-Skript.

Grüße,
Artemis