
Ich kann es dazu bringen, die Textdatei zu lesen, bis sie zu einer durch Kommas getrennten Textdatei wird.
Ich möchte die beiden Variablen in jeder Zeile lesen und jede mit einer If-Anweisung auf eine andere Bedingung testen. Das Problem ist, dass ich die Variablen nicht richtig lesen kann. Habe vieles ausprobiert, aber hier ist, was ich posten werde. Timeouts dienen dazu, zu sehen, was passiert:
for /f "tokens=*" %%a in (TestText.txt) do (
timeout /t 1
echo %%a is the present variabe
timeout /t 2
if %%a=="One","1" echo Match for "One","1"
timeout /t 3
if %%a=="One""1" echo Match for "One","1"
timeout /t 4
if %%a=="One" echo Match for "One"
timeout /t 5
if %%a=="1" echo Match for "1"
timeout /t 6
)
TestText.txt
"One","1"
"Two","2"
"Three","3"
"Four","4"
AUSGABE:
"One","1" is the present variabe
Antwort1
Das Problem mit Ihrer Bedingung ist, dass Sie das Komma ( ) maskieren müssen ,
. In der Eingabeaufforderung geschieht dies mit einem Zirkumflex ( ^
).
Das funktioniert:
for /f %%a in (TestText.txt) do (
if %%a=="One"^,"1" echo Match for "One","1"
)
Da Sie jedoch CSV verwenden, möchten Sie möglicherweise jede Zeile durch Kommas trennen. Dies geschieht mit der tokens=1-n delims=,
Option, wobei n
die Anzahl der Werte pro Zeile ist.
%%a
Die einzelnen Werte werden in , %%b
, usw. gespeichert :
for /f "tokens=1-2 delims=," %%a in (TestText.txt) do (
if %%a=="One" echo Match for "One"
if %%b=="1" echo Match for "1"
)