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

2

Eu posso ler o arquivo de texto até que ele se torne um arquivo de texto delimitado por vírgulas.

Eu gostaria de ler as duas variáveis em cada linha e testar cada uma com uma declaraçã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"

OUTPUT:

"One","1" is the present variabe
    
por Sms 29.06.2012 / 18:32

1 resposta

4

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

Isso funciona:

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

No entanto, como você está usando o CSV, convém dividir cada linha pelas vírgulas. Isso é feito com a opção tokens=1-n delims=, , em que 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"
)

Mais informações

por 29.06.2012 / 19:34