-heny-
Goto Top

Spezialfall bei FOR-Schleife

Hallo,

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

Content-Key: 85363

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

Printed on: April 24, 2024 at 22:04 o'clock

Member: Biber
Biber Apr 12, 2008 at 20:30:07 (UTC)
Goto Top
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:]
>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
Member: -heny-
-heny- Apr 12, 2008 at 21:13:49 (UTC)
Goto Top
Hallo,

als ich deine Lösung angeschaut habe, ist mir gerade ein Geistesblitz gekommen. Ich habe es mir eigentlich die ganze Zeit viel zu schwer gemacht. Aber naja, aus Fehlern lernt man ja bekanntlich. face-smile

        for /f "delims= eol=#" %%i in (settings.cfg) do set "%%i"  

Da ich die Variablendeklarierung sowieso schon fast komplett in der settings.cfg stehen habe, kann ich sie ja einfach ohne große Umstände nutzen und somit etwas Code sparen. Nur noch eben die Kommentare in der Settings-Datei mittels eol=# ausgeklammert und fertig. *g*

Danke noch mal!

Gruß,
heny