Ms-Dos - bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

 
Vista:
sin imagen de perfil
Val: 12
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Albino (6 intervenciones) el 08/06/2018 21:24:47
Buen día,

No tengo experiencia en la programación batch y necesito un código que me ayude con lo siguiente: tengo un archivo con una serie de registros que están encerrado por comillas y separados por comas y necesito leer los registros y comparar el segundo campo para ver si el valor es un "*", en caso de serlo borrar la linea y así hasta terminar con todo el fichero.

Nombre del archivo: texto.txt
Ejemplo de los registros:
"02-06-2018 12:15:00","32.8","12","-0.5","7.1","226.1","8.5","874.1","0.0","0","*"
"02-06-2018 12:30:00","*","*","*","*","148.7","8.1","881.5","*","0","*"
"02-06-2018 12:45:00","32.5","14","1.1","9.9","*","*","*","0.0"

Eliminar todas las lineas que cumplan con la condición (segunda linea).
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Antoni Masana (811 intervenciones) el 11/06/2018 07:07:31
El bat para hacer lo que pides seria este:

1
2
@echo off
for /F "delims=, tokens=1-2,*" %%a in (File_1.txt) do if not %%b=="*" Echo %%a,%%b,%%c>File_2.txt

o

1
2
@echo off
for /F "delims=, tokens=1-2,*" %%a in (File_1.txt) do if %%b NEQ "*" Echo %%a,%%b,%%c>File_2.txt

Lee el fichero File_1.txt y escribe en el fichero File_2.txt las líneas que el segundo campo no es un asterisco.

Para más información:

1
2
FOR /?
IF /?

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 12
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Albino García Soto (6 intervenciones) el 11/06/2018 23:28:09
Buen día Antoni Masana,

Excelente, me funciona perfectamente el código que me aportaste, agradezco muchísimo tu ayuda, Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 12
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Albino (6 intervenciones) el 12/06/2018 02:06:33
Nuevamente, al ejecutarlo con un fichero con n numero de lineas solo pasa la ultima linea que esta exento de la condición...
Ejemplo:

File_1.txt
"01-06-2018 14:15:00","19.7","27","0.3","5.0","282.7","7.5","0.5","0.0","2","*","*"
"01-06-2018 14:30:00","20.0","25","-0.4","8.2","315.1","15.1","0.5","0.0","2","*","*"
"01-06-2018 14:45:00","*","*","*","*","*","*","*","0.0","1","*","*","*","*","*","*","*","*"
"01:06-2018 15:00:00","20.0","25","-0.8","7.7","338.8","13.5","0.5","0.0","2","19.8","26","-0.4","*","305.1","15.1","0.5","0.15","*","2","*","*"
"01-06-2018 15:15:00","19.6","26","-0.6","7.9","308.9","13.1","0.5","0.0","2","*","*"
"01-06-2018 15:30:00","*","*","*","*","*","*","*","0.0","1","*","*","*","*","*","*","*","*"
"01-06-2018 15:45:00","19.1","27","-0.4","8.5","276.8","14.6","0.5","0.0","2","*","*"
"01-06-2018 16:00:00","*","*","*","*","*","*","*","0.0","1","*","*","*","*","*","*","*","*"
"01-06-2018 16:15:00","19.6","24","-1.4","7.6","292.9","16.4","0.5","0.0","2","*","*"

Solo imprime el ultimo registro
File_2.txt
"01-06-2018 16:15:00","19.6","24","-1.4","7.6","292.9","16.4","0.5","0.0","2","*","*"

ideal:
File_2.txt
"01-06-2018 14:15:00","19.7","27","0.3","5.0","282.7","7.5","0.5","0.0","2","*","*"
"01-06-2018 14:30:00","20.0","25","-0.4","8.2","315.1","15.1","0.5","0.0","2","*","*"
"01:06-2018 15:00:00","20.0","25","-0.8","7.7","338.8","13.5","0.5","0.0","2","19.8","26","-0.4","*","305.1","15.1","0.5","0.15","*","2","*","*"
"01-06-2018 15:15:00","19.6","26","-0.6","7.9","308.9","13.1","0.5","0.0","2","*","*"
"01-06-2018 15:45:00","19.1","27","-0.4","8.5","276.8","14.6","0.5","0.0","2","*","*"
"01-06-2018 16:15:00","19.6","24","-1.4","7.6","292.9","16.4","0.5","0.0","2","*","*"

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Antoni Masana (811 intervenciones) el 12/06/2018 06:45:15
Mea culpa.

Hay un error en la transcripción del código, cuando lo probé funciono perfectamente. El lugar de un > hacen falta dos >>


El bat para hacer lo que pides seria este:

1
2
3
@echo off
if exist File_2.txt del File_2.txt
for /F "delims=, tokens=1-2,*" %%a in (File_1.txt) do if not %%b=="*" Echo %%a,%%b,%%c>>File_2.txt

o

1
2
3
@echo off
if exist File_2.txt del File_2.txt
for /F "delims=, tokens=1-2,*" %%a in (File_1.txt) do if %%b NEQ "*" Echo %%a,%%b,%%c>>File_2.txt

Lee el fichero File_1.txt y escribe en el fichero File_2.txt las líneas que el segundo campo no es un asterisco.

Para más información:

1
2
FOR /?
IF  /?

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Antoni Masana (811 intervenciones) el 12/06/2018 11:01:28
Otro formato que también funciona:

1
2
3
4
5
@echo off
if exist File_2.txt del File_2.txt
(
 for /F "delims=, tokens=1-2,*" %%a in (File_1.txt) do if not %%b=="*" Echo %%a,%%b,%%c
)>File_2.txt


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
sin imagen de perfil
Val: 12
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

bach que lea un fichero, verifique el segundo campo y determine si borra la linea o la deja

Publicado por Albino (6 intervenciones) el 12/06/2018 16:44:20
Buen día Antoni Masana.

He probado los códigos que amablemente me compartiste y funcionan a la perfección, es justo lo que necesito, agradezco tu tiempo, tu disposición y el valor de tu persona para ayudar y compartir tus conocimientos. Un abrazo.
Saludos cordiales.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar