Eliminación de algunas líneas en un archivo de texto

Resuelto
Cybmatt Mensajes publicados 4 Estado Miembro -  
Cybmatt Mensajes publicados 4 Estado Miembro -
Hola,

Tengo un procesamiento automatizado que implementar con un archivo batch de Windows.
Aquí está mi problemática:
Tengo un conjunto de archivos planos (formatos .csv), cuyo separador es el punto y coma. Todos tienen la misma estructura:
- una primera línea cuyos primeros tres caracteres son "00;"
- n líneas cuyos primeros tres caracteres son "01;"

Ejemplo:
00;20001;ABC;20190617;1224;19;01;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
01;123456789;20190617;ABCD;81257033099;20001201906170000001;EUR;1906;25;FR;09055478004;05;1;ZV13;717409;1;1912875;;;;;16;;;;;;;0000048235;;;;;;;;;;;;;;;;1;;;;;;;;;;;21;1;ZPCC;1912875;EUR;XXX AABB
01;123456789;20190617;ABCD;81257033099;20001201906170000002;EUR;1906;25;FR;09045845016;05;1;ZV13;717409;1;1912875;;;;;16;;;;;;;0000048235;;;;;;;;;;;;;;;;1;;;;;;;;;;;21;1;ZPCC;1912875;EUR;XXX CC DD

Mi objetivo es:
- reunir todos los archivos csv en un solo archivo csv llamado "FVMA_global.csv"
- eliminar en este último todas las líneas que comienzan por "00;" creando un archivo limpio llamado "FVMA_global_<fechadeldia>.csv"

Para la primera etapa, sin problema, he utilizado este código:
FOR /f %%i in ('dir /B *.csv') do ( IF %%i NEQ FVMA_global.csv type %%i>>FVMA_global.csv )


Eso me da bien un archivo llamado "FVMA_global.csv"

No logro realizar la segunda parte del procesamiento. Supongo que hay que usar un bucle "for /f" también, pero no logro hacer pruebas sobre los 3 primeros caracteres, y hacer que, en función de esa prueba, se coloque el contenido de la línea analizada en un nuevo archivo.csv (que es el archivo final, limpiado de las líneas en "00;")

Muchas gracias de antemano por vuestra valiosa ayuda.</fechadeldia>

1 respuesta

  1. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
     
    hola
    y con findstr ?
    extraer las líneas que no empiezan por 00; (no lo he probado)
    findstr /r /v /c:^00; fichier.csv

    o con comillas "
    findstr /r /v /c:"^00;" fichier.csv
    0
    1. Cybmatt Mensajes publicados 4 Estado Miembro
       
      ¿Esto excluirá solo las líneas que empiezan por "00;"? ¿Qué pasa si una línea contiene la cadena "00;" en medio de la línea (y no al inicio)? ¿Esa misma línea también quedará excluida?
      0
    2. dubcek Mensajes publicados 18627 Fecha de registro   Estado Colaborador Última intervención   5 660
       
      el ^ solo significa al inicio de la línea
      ver ayuda findstr
      0
    3. Cybmatt Mensajes publicados 4 Estado Miembro
       
      funciona perfecto, lo hice así:
      findstr /r /v /c:"^00;" FVMA_global.csv>> FVMA_global2.csv
      0