Wie Leerzeichen aus Batch-For-Variable entfernen?
Hallo,
ich habe aus einem System ein Status-File, welches ich weiterverarbeiten möchte. Das File ist eine ASCII-Textdatei und sieht wie folgt aus:
Nun möchte ich eine BATCH-Datei haben, die mir den Online oder Offline Status einer ID zurückliefert. Wenn ich also z.B.
eintippe, soll als Ausgabe ONLINE kommen.... bei ID 02 entsprechend OFFLINE usw.... zusätzlich brauche ich als Rückgabewerte auch noch ERRORLEVEL 0 und 1.
Mit der folgenden FOR-Schleife:
bekomme ich die richtigen Werte in zwei Variablen geliefert, nur hat die Statusvariable %j ja jetzt ein führendes Leerzeichen. Wie bekomme ich das nun am elegantesten weg?
Gruß,
Dino
ich habe aus einem System ein Status-File, welches ich weiterverarbeiten möchte. Das File ist eine ASCII-Textdatei und sieht wie folgt aus:
01: E: RC:OFF Z:0 V:612 V:1.05 20110301 16:44:31
02: Offline
03: E: RC:OFF Z:0 V:612 V:1.05 20110301 16:44:31
04: E: RC:OFF Z:0 V:612 V:1.05 20110301 16:44:31
05: Offline
06: Offline
07: Offline
...
Nun möchte ich eine BATCH-Datei haben, die mir den Online oder Offline Status einer ID zurückliefert. Wenn ich also z.B.
STATUS.BAT 01
eintippe, soll als Ausgabe ONLINE kommen.... bei ID 02 entsprechend OFFLINE usw.... zusätzlich brauche ich als Rückgabewerte auch noch ERRORLEVEL 0 und 1.
Mit der folgenden FOR-Schleife:
for /f "delims=: tokens=1,2" %%i in ('findstr "%1: " status.txt') do (
echo ID : %%i
echo Status: %%j
)
bekomme ich die richtigen Werte in zwei Variablen geliefert, nur hat die Statusvariable %j ja jetzt ein führendes Leerzeichen. Wie bekomme ich das nun am elegantesten weg?
Gruß,
Dino
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 165643
Url: https://administrator.de/contentid/165643
Ausgedruckt am: 03.12.2024 um 17:12 Uhr
4 Kommentare
Neuester Kommentar
Hallo ipzipzap und willkommen im Forum!
Du musst kaum etwas ändern (wenn Du nicht tatsächlich "Online" als Ausgabe erhalten willst):
Die Anführungszeichen in Zeile 4 sind nur als Demo gedacht, und wenn du tatsächlich auch das Leerzeichen nach dem ":" suchen lassen willst (was wegen der enthaltenen Zeit-Angaben sinnvoll ist), benötigt "
Grüße
bastla
Du musst kaum etwas ändern (wenn Du nicht tatsächlich "Online" als Ausgabe erhalten willst):
@echo off & setlocal
for /f "tokens=1,2 delims=: " %%i in ('findstr /c:"%1: " status.txt') do (
echo ID : %%i
echo Status: "%%j"
)
findstr
" den Schalter "/c:
" ...Grüße
bastla
Hallo ipzipzap!
Ob diese "Vorsichtsmaßnahme" in diesem Fall nötig ist, kann ich zwar nicht abschätzen, aber im Zweifelsfall hast Du zumindest keine Nachteile zu erwarten, daher kannst Du "
Grüße
bastla
wozu ist das "setlocal" am Anfang gedacht?
Da die Weiterverarbeitung ja ohnehin schon im Raum stand : Dort wirst Du auch andere als nur Schleifen-Variablen benötigen, deren Wert aber nur in diesem Batch Bedeutung hat - genau das erreichst Du mit "setlocal
": Alle danach erfolgten Änderungen an schon bestehenden und alle neu erstellten Variablen werden nach dem zugehörigen "endlocal
" (wird automatisch am Ende des aktuellen Batches ausgeführt) "vergessen" ...Ob diese "Vorsichtsmaßnahme" in diesem Fall nötig ist, kann ich zwar nicht abschätzen, aber im Zweifelsfall hast Du zumindest keine Nachteile zu erwarten, daher kannst Du "
setlocal
" standardmäßig am Beginn eines Batches setzen.Grüße
bastla