Spezialfall bei FOR-Schleife
Hallo,
gegeben sei folgender Codeschnipsel:
Ich möchte jetzt, dass mit obiger for-Schleife der Inhalt der "test.txt" ausgelesen wird und Variablen entsprechend definiert werden. Als Trennzeichen zwischen Name der jew. Variable und Inhalt ist das Zeichen "=" bestimmt. Das ganze funktioniert entsprechend mit "normalen" Inhalten in der "test.txt" auch perfekt. Wenn dort beispielsweise
steht, so wird eine Variable mit dem Namen "var1" und dem Inhalt "test" deklariert.
Der Inhalt der "test.txt" beläuft sich in einem Spezialfall allerdings auf folgende Zuweisung:
Es soll also eine Variable mit dem Namen "var1" und dem Inhalt "===" angelegt werden. Das ganze funktioniert allerdings nicht.
Einen Workaround habe ich geschaffen, indem ich den Inhalt der "test.txt" in "var1=$==" geändert habe und bei der Ausgabe im Skript das "$"-Zeichen durch "=" ersetze [%var1:$==%]. Ideal ist das allerdings nicht, da im Skript dann an jeder Stelle noch eine Anpassung vorgenommen werden muss.
Solltet ihr eine einfachere Lösung wissen, durch welche ich den Inhalt der "test.txt" nicht modifizieren brauche, so würde ich mich sehr freuen, wenn ihr mir diese mitteilt.
Gruß,
heny
gegeben sei folgender Codeschnipsel:
@echo off
for /F "delims== tokens=1,*" %%i in (test.txt) do set %%i=%%j
echo %var1:$==%
pause
Ich möchte jetzt, dass mit obiger for-Schleife der Inhalt der "test.txt" ausgelesen wird und Variablen entsprechend definiert werden. Als Trennzeichen zwischen Name der jew. Variable und Inhalt ist das Zeichen "=" bestimmt. Das ganze funktioniert entsprechend mit "normalen" Inhalten in der "test.txt" auch perfekt. Wenn dort beispielsweise
var1=test
steht, so wird eine Variable mit dem Namen "var1" und dem Inhalt "test" deklariert.
Der Inhalt der "test.txt" beläuft sich in einem Spezialfall allerdings auf folgende Zuweisung:
var1====
Es soll also eine Variable mit dem Namen "var1" und dem Inhalt "===" angelegt werden. Das ganze funktioniert allerdings nicht.
Einen Workaround habe ich geschaffen, indem ich den Inhalt der "test.txt" in "var1=$==" geändert habe und bei der Ausgabe im Skript das "$"-Zeichen durch "=" ersetze [%var1:$==%]. Ideal ist das allerdings nicht, da im Skript dann an jeder Stelle noch eine Anpassung vorgenommen werden muss.
Solltet ihr eine einfachere Lösung wissen, durch welche ich den Inhalt der "test.txt" nicht modifizieren brauche, so würde ich mich sehr freuen, wenn ihr mir diese mitteilt.
Gruß,
heny
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 85363
Url: https://administrator.de/contentid/85363
Ausgedruckt am: 22.11.2024 um 22:11 Uhr
2 Kommentare
Neuester Kommentar
Moin -heny-,
wenn Du diesen Spezialfall wirklich erwarten musst, dann kannst Du die Ini-Datei mit folgender doppelten FOR /F-Konstruktion unverändert abfackelt:
[Demo am CMD-Prompt:]
Grüße
Biber
wenn Du diesen Spezialfall wirklich erwarten musst, dann kannst Du die Ini-Datei mit folgender doppelten FOR /F-Konstruktion unverändert abfackelt:
[Demo am CMD-Prompt:]
>type my.ini
var1=test
var2====
>for /f "delims=" %i in (my.ini) do @for /f "delims== tokens=1,*" %a in ("x=%i") do @set "%b"
>set var
var1=test
var2====
Grüße
Biber