snugg123
Goto Top

Dieselbe Variable nur einmal aus Textdatei lesen wenn sie mehrfach drinsteht

Hi,

ich habe eine Textdatei, in der eine Variable definiert ist.

Über

FOR /F "tokens=*" %%A IN ('type "%~dp0\datei.txt"') DO SET %%A

wird dann die Variable in die Batchdatei eingelesen.

Nun habe ich festgestellt, dass ich in die Textdatei dieselbe Variable mehrfach definieren kann und dann die letzte Definition gelesen wird.

Wie kann man es machen, dass wenn dieselbe Variable mehrfach in der Textdatei definiert ist, nur die erste Definition dieser Variablen ausgelesen wird?

Gruss

Content-ID: 594201

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

Ausgedruckt am: 13.11.2024 um 09:11 Uhr

145033
145033 06.08.2020 aktualisiert um 17:36:20 Uhr
Goto Top
for /f "usebackq tokens=1,* delims==" %%a in ("%~dp0datei.txt") do if not defined %%~a set "%%~a=%%~b"  
138701
Lösung 138701 06.08.2020 um 19:01:26 Uhr
Goto Top
Außerdem hilfreich:

( set /p a=
  set /p b=
  set /p c=
) <datei.txt

Damit werden die ersten 3 Zeilen in die Variablen "a", "b" und "c" gepackt.
snugg123
snugg123 06.08.2020 aktualisiert um 21:09:31 Uhr
Goto Top
@ileies

Das klappt. Danke.
snugg123
snugg123 06.08.2020 um 21:09:03 Uhr
Goto Top
@145033

Danke für Deinen Vorschlag. Klappt bei mir aber irgendwie nicht. Ich lese in der Batch eine Variable aus, die dann geprüft wird. Wenn ich Deinen Code stattdessen 1:1 übernehme, wird die Variable immer als falsch ausgewiesen auch wenn sie richtig in der Textdatei steht.

Bin aber im Programmieren auch nicht so bewandert, daher werde ich wohl irgendwas falsch gemacht haben.

Vielleicht hast Du eine Idee woran das liegt?
138701
138701 11.08.2020 um 17:34:53 Uhr
Goto Top
Du hast ein "\" vergessen...


for /f "usebackq tokens=1,* delims==" %%a in ("%~dp0datei.txt") do if not defined %%~a set "%%~a=%%~b"
->
for /f "usebackq tokens=1,* delims==" %%a in ("%~dp0\datei.txt") do if not defined %%~a set "%%~a=%%~b"
145033
145033 11.08.2020 aktualisiert um 18:10:15 Uhr
Goto Top
Zitat von @138701:

Du hast ein "\" vergessen...
Nein, der ist bei %~dp0 schon enthalten 😘