elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  eliminar filas vacias txt (con columnas)
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: eliminar filas vacias txt (con columnas)  (Leído 8,991 veces)
choporrue

Desconectado Desconectado

Mensajes: 4


Ver Perfil
eliminar filas vacias txt (con columnas)
« en: 17 Septiembre 2014, 09:40 am »

Buenos días,

Tengo varios ficheros txt en una carpeta con la siguiente estructura:

Código:
XXX  XX XXXXXX XX
XXX  XX XXXXXX XX
XXX  XX XXXXXX XX
XXX  XX XXXXXX XX

El caso es que los necesito unir. He hecho esto mediante un comando simple:

Código
  1. Copy /B "*.txt" "file.txt"

El caso es que me junta los archivos pero me deja un monton de filas en blanco, que no necesito. Para ello he creado otro fichero batch (gracias grandísimo post de Leo Gutiérrez "acciones sobre archivos de texto) con el siguiente código:

Código
  1. @echo off
  2. echo Mi archivo con lineas en blanco :
  3. type "file.txt"
  4. for /f %%x in ('type "file.txt"') do (
  5. echo %%x >> file2.txt
  6. )
  7. echo Mi archivo sin lineas en blanco :
  8. type file2.txt

El resultado que me da en file2.txt es que efectivamente me quita las filas vacias, pero también se carga todas las columnas salvo la primera quedando el fichero asi:

Código:
XXX
XXX
XXX
XXX
etc.

¿Cómo puedo unir los ficheros con todos los datos? puedo hacer las dos fases (unir ficheros de una carpeta y eliminar las filas en blanco) con un solo batch ?

Muchas gracias y saludos.





« Última modificación: 17 Septiembre 2014, 10:56 am por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: eliminar filas vacias txt (con columnas)
« Respuesta #1 en: 17 Septiembre 2014, 10:58 am »

¿Cómo puedo unir los ficheros con todos los datos?

El For solo está procesando la primera palabra de cada linea.

Modificalo de esta manera:

Código
  1. For /F "UseBackQ Delims=" %%x in ("file.txt") do (
  2.    ...
  3. )

Saludos


En línea

choporrue

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: eliminar filas vacias txt (con columnas)
« Respuesta #2 en: 17 Septiembre 2014, 11:42 am »

Hola!

Ante todo, muchas gracias por la rápida respuesta.
He probado tu solución y en el fichero resultante (file2.txt), las filas que antes aparecían en blanco han sido sustituidas por la expresión "ECHO est  desactivado".

el código con tu retoque lo tengo así:

Código
  1. @echo off
  2. echo Mi archivo con lineas en blanco :
  3. type "file.txt"
  4. For /F "UseBackQ Delims=" %%x in ("file.txt") do (
  5. echo %%x >> file2.txt
  6. )
  7. echo Mi archivo sin lineas en blanco :
  8. type file2.txt



Muchas gracias de nuevo!


Saludos.


« Última modificación: 17 Septiembre 2014, 13:32 pm por Eleкtro » En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: eliminar filas vacias txt (con columnas)
« Respuesta #3 en: 17 Septiembre 2014, 13:32 pm »

He probado tu solución y en el fichero resultante (file2.txt), las filas que antes aparecían en blanco han sido sustituidas por la expresión "ECHO est  desactivado".

Los parámetros que le añadi al For para corregirlo, toman la linea entera, y excluyen lineas en blanco.

Si no te funciona el código, quizás exista algun caracter ilegal en dichas filas, quizás hayan lineas que solo contengan espacios (eso no se considera una linea vacia), quizás la codificación del archivo no sea la apropiada, o quizás pueda ser causa de otro motivo.

Utiliza el punto en el comando Echo para imprimir lineas en blanco o con espacios:

Código
  1. Echo. %%x

Muestra el contenido de 'file.txt'.

Saludos
« Última modificación: 17 Septiembre 2014, 13:48 pm por Eleкtro » En línea

choporrue

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: eliminar filas vacias txt (con columnas)
« Respuesta #4 en: 17 Septiembre 2014, 16:09 pm »

Gracias por tu respuesta de nuevo.

Me parece que, efectivamente, lo que ocurre es que hay líneas en blanco pero no vacias (contienen espacios).

Existe alguna forma de hacerlo?

Subo el archivo a Dropbox por si eso ayudase:

https://www.dropbox.com/s/ilu87uwip8i57fy/TEST.rar?dl=0

Gracias de nuevo por la ayuda!

Saludos.
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: eliminar filas vacias txt (con columnas)
« Respuesta #5 en: 17 Septiembre 2014, 16:57 pm »

Existe alguna forma de hacerlo?

Te diría que si, utilizando la expresión regular "^\s+" con el comando Findstr /V /R "expresión" en windows 7 debería funcionar, pero al parecer no me reconoce bien la expresión en Win8.1 (tengo el comando externo Findstr bugueado).

De todas formas, un RegEx sería un proceso muy lento para el pobre Batch, mejor te escribo un código equivalente en VbScript:

Script.vbs
Código
  1. InputFile  = ".\File.txt"
  2. OutputFile = ".\File2.txt"
  3.  
  4. Const ForReading = 1
  5. Const ForWriting = 2
  6.  
  7. Set FSO = CreateObject("Scripting.FileSystemObject")
  8. Set ReadFile = FSO.OpenTextFile(InputFile, ForReading)
  9.  
  10. Do Until ReadFile.AtEndOfStream
  11.  
  12. strLine = ReadFile.Readline
  13. strLine = Trim(strLine)
  14.  
  15. If strLine <> "" Then
  16. strNewContents = (strNewContents & strLine & vbNewLine)
  17. End If
  18.  
  19. Loop : ReadFile.Close
  20.  
  21. Set ReadFile = FSO.OpenTextFile(OutputFile, ForWriting, True)
  22. ReadFile.Write strNewContents
  23. ReadFile.Close
  24.  
  25. wScript.Quit(0)

Si no te sirve y lo necesitas en Batch, comenta y te propondré soluciones alternativas (a un regex) en dicho lenguaje.

Saludos!
En línea

choporrue

Desconectado Desconectado

Mensajes: 4


Ver Perfil
Re: eliminar filas vacias txt (con columnas)
« Respuesta #6 en: 18 Septiembre 2014, 00:13 am »

Absolutamente brillante! 

El código en VBS funciona de lujo!

Ya para nota, podrá unir los ficheros y eliminar las filas en un solo proceso?

Enorme tu ayuda!

Saludos.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
consustas en columnas y filas (de una base de datos) « 1 2 »
PHP
DJmixmancar 10 7,538 Último mensaje 3 Julio 2008, 22:16 pm
por sirdarckcat
eliminar filas y columnas en java
Java
sauce19 3 8,695 Último mensaje 4 Septiembre 2011, 19:48 pm
por [Case]
Dudas sobre suma de filas y columnas en C++. « 1 2 »
Programación C/C++
Gagy 16 15,074 Último mensaje 9 Marzo 2013, 23:28 pm
por amchacon
Llenado de Datagridview columnas y filas
.NET (C#, VB.NET, ASP)
mgarcia9483 0 2,073 Último mensaje 19 Agosto 2014, 02:57 am
por mgarcia9483
programa en neatbeas generar filas y columnas , encerar filas y columnas,43
Dudas Generales
iPaul8870 3 2,414 Último mensaje 23 Agosto 2019, 03:50 am
por engel lex
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines