¿Cómo extraer 2 columnas de un archivo CSV en CMD?
Tengo un archivo csv con 29 columnas, solo necesito la 6ª y 7ª para copiar archivos a una carpeta diferente. Hay algunos campos vacíos en la columna G, así que quiero saltar esas líneas.
Pensé que podía renunciar a asignar todas las variables, pero cuando el código no funcionó, las escribí todas… pero, desafortunadamente, eso no me ayudó a resolver esto 🙂
Mi script parece estar atascado sin las variables, ya que no funciona como esperaba y no entiendo lo que hice mal. ¿Alguien puede explicar qué me perdí?
@ECHO OFF
SETLOCAL
SET pathname=E:\2021\1130
SET inputfile=%pathname%\test.csv
FOR /F "tokens=1-29* delims=," %%A IN (%inputfile%) DO (
Set "var1=%%A"
Set "var2=%%B"
Set "var3=%%C"
Set "var4=%%D"
Set "var5=%%E"
Set "var6=%%F"
Set "var7=%%G"
Set "var8=%%H"
Set "var9=%%I"
Set "var10=%%J"
Set "var11=%%K"
Set "var12=%%L"
Set "var13=%%M"
Set "var14=%%N"
Set "var15=%%O"
Set "var16=%%P"
Set "var17=%%Q"
Set "var18=%%R"
Set "var19=%%S"
Set "var20=%%T"
Set "var21=%%U"
Set "var22=%%V"
Set "var23=%%W"
Set "var24=%%X"
Set "var25=%%Y"
Set "var26=%%Z"
Set "var27=%%AA"
Set "var28=%%AB"
Set "var29=%%AC"
CALL :OUTPUT
)
:OUTPUT
IF NOT DEFINED [%var7%] echo goto next record
IF [%%G] == [] Echo valor faltante
echo copiar %%F/%%G %pathname%/%var6%/%var7%
davy.ai
El script anterior lee un archivo csv y copia archivos a una carpeta diferente basándose en los valores encontrados en las columnas 6 y 7. Sin embargo, el script no funciona correctamente porque se queda sin las variables.
Parece que el script está intentando asignar valores a una gran cantidad de variables (var1 a var29) pero en realidad no está utilizando todas ellas en el código posterior. Esto se puede simplificar asignando valores solo a las variables que se usarán más adelante.
Además, para saltar líneas con campos vacíos en la columna G, el script puede comprobar si la variable de esa columna está definida y luego comprobar si el valor está vacío. Si está vacío, el script puede saltar al siguiente registro.
Aquí se sugiere un script actualizado:
En este script actualizado, solo estamos asignando valores a variables para las columnas 6 y 7 utilizando “tokens=6,7”, y estamos comprobando valores vacíos en la columna G utilizando “if “%%G”==”””. Si una línea tiene un valor vacío en la columna G, saltamos al siguiente registro utilizando “goto :next”.