¿Cómo puedo leer un archivo de texto delimitado por comas en un archivo por lotes de Windows?

¿Cómo puedo leer un archivo de texto delimitado por comas en un archivo por lotes de Windows?

Puedo hacer que lea el archivo de texto hasta que se convierta en un archivo de texto delimitado por comas.

Me gustaría leer las dos variables en cada línea y probar cada una con una declaración If para otra condición. El problema es que no puedo leer las variables correctamente. Intenté muchas cosas pero esto es lo que publicaré. Los tiempos de espera son para ver qué está pasando:

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
)

Textodeprueba.txt

"One","1"
"Two","2"
"Three","3"
"Four","4"

PRODUCCIÓN:

"One","1" is the present variabe

Respuesta1

El problema con tu condición es que tienes que escapar de la coma ( ,). En el símbolo del sistema, esto se hace con un signo de intercalación ( ^).

Esto funciona:

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

Sin embargo, dado que está utilizando CSV, es posible que desee dividir cada línea por comas. Esto se hace con la tokens=1-n delims=,opción donde nestá el número de valores por línea.

Los valores separados se almacenarán en %%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"
)

Más información

información relacionada