Wie kann ich eine durch Kommas getrennte Textdatei in einer Windows-Batchdatei lesen?

Wie kann ich eine durch Kommas getrennte Textdatei in einer Windows-Batchdatei lesen?

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 ndie Anzahl der Werte pro Zeile ist.

%%aDie 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"
)

Weitere Informationen

verwandte Informationen