Como posso ler um arquivo de texto delimitado por vírgula em um arquivo em lote do Windows?

Como posso ler um arquivo de texto delimitado por vírgula em um arquivo em lote do Windows?

Consigo fazer com que ele leia o arquivo de texto até que ele se torne um arquivo de texto delimitado por vírgulas.

Gostaria de ler as duas variáveis ​​em cada linha e testar cada uma delas com uma instrução If para outra condição. O problema é que não consigo ler as variáveis ​​corretamente. Tentei muitas coisas, mas aqui está o que vou postar. Os tempos limite são para ver o que está acontecendo:

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"

SAÍDA:

"One","1" is the present variabe

Responder1

O problema da sua condição é que você precisa escapar da vírgula ( ,). No prompt de comando, isso é feito com um sinal de intercalação ( ^).

Isso funciona:

for /f %%a in (TestText.txt) do (
    if %%a=="One"^,"1" echo Match for "One","1"
)

No entanto, como você está usando CSV, você pode querer dividir cada linha por vírgulas. Isso é feito com a tokens=1-n delims=,opção onde né o número de valores por linha.

Os valores separados serão armazenados em %%a, %%b, etc.:

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

Outras informações

informação relacionada