lunes, 19 de octubre de 2015

Borrado de caracter sobre texto plano (TXT)

Hola nuevamente!

Hoy les traigo un nuevo programa, el cual lo llamo "BMCTP". Su función es básicamente borrar un caracter específico dentro de un texto plano.

Se preguntarán el "por qué usar este programa" si se puede modificar manualmente un archivo txt. Bueno la respuesta es simple, este Script busca en todo el texto el caracter seleccionado y los borra, lo cual agiliza y automatiza la tarea.

Está diseñado para textos extensos, aunque cabe mencionar que entre mayor sea el tamaño del archivo más demorará en terminar. Por otro lado también hago mención de que el programa está en "Beta" por llamarlo de alguna manera. Obviamente puede tener errores o algún bug que de ser así agradecería que me lo hicieran saber o me corrigan el código.

Haré un listado rápido de lo que hace el programa:

1. - Activar el expansión de Setlocal
2. - Modificar el tamaño de la consola y añadir un título a la ventana
3. - Configurar la ruta (Path) del archivo a ser modificado (Default / Usuario)
4. - Consultar el nombre del archivo (Usuario)
5. - Crear un "Backup" o respaldo del archivo original antes de comenzar
6. - Consultar el caracter a ser eliminado del texto (Usuario)
7. - Crear el bucle con un For para leer línea por línea y eliminar el caracter
8. - Preguntar al usuario si desea ver el archivo final antes de cerrar el programa
9. - Muestra en pantalla las rutas donde se encuentra tanto al "Backup" como el archivo final
10. - Copia el archivo modificado a la carpeta asignada por el usuario
11. - Elimina el contenido de la carpeta en "Temp"
12. - Finaliza el Script


Como se puede apreciar el programa es bastante sencillo, pero simplifica la tarea de eliminar algún Guión, Punto, Coma, Letra, Espacio, Dos puntos, Punto y coma, de un texto plano que a veces es una tarea muy engorrosa.

Me despido enseñando una imagen con parte del código, el programa corriendo y por último un link para probar el Script.

Saludos!

Parte del código
Parte del código

BMCTP.bat
Consola con el programa funcionando


6 comentarios:

Anónimo dijo...

Estimado y si quiero eliminar un numero de espacios mayor a 1, es decir, eliminar los espacios que están juntos entre cada palabra y solo dejar un espacio. ejemplo ?

31-01-20 06-07 200.6.78.241 <-> 198.41.34.70

Saludos

CodexOscura dijo...

Hola Anonimo,

En ese caso habría que detectar con el mismo sistema que implementé un contador de caracteres.
Entonces especificar en la entrada que busque un "espacio" y que si el siguiente caracter es espacio nuevamente los borre, modificando el texto y dejando sólo el primer espaciado.

van07 dijo...

esta bueno el script pero si yo quisiera eliminar varios caracteres a la vez que debo hacer ya que colocando de a un caracter si me funciona ejemplo retirar los . pero si deseo retirar las ` tildes del texto y los . puntos como seria el proceso o como los debo separar al momento que el bat pide que ingrese los caractares a eliminar?
muchas gracias por cualquier colaboracion

CodexOscura dijo...

Hola @van07,

Obvio, lo que pides sí se puede realizar.

Para ello habría que agregar varias cosas, como por ejemplo renovar la entrada de usuario para que esta capte y separe las distintas entradas, lo cual modifica también la forma en que recibe los caracteres. Por ejemplo si la entrada las separamos por "," (comas), y queremos ingresar dentro de los valores de entrada una "," (coma) para borrar del texto, habría que especificar la "," (coma) como una abreviatura.
por lo demás hay que agregar un sistema que separe y cuente las entradas que van a ser eliminadas del texto para no saturar ni entorpecer el FOR.
Hay que realizar un bucle para que elimine dentro de una misma acción los caracteres a seleccionados en la entrada de usuario.
A mi parecer es fácil hacerlo por lógica, pero en la práctica es distinto ya que Batch es bien sensible a muchos procesos juntos y se vuelve un poco loco.
Cuando realice una nueva actualización del programa agregaré todas esas opciones mencionadas y alguna que vea prudente.

Saludos y gracias por el interés en Batch ya que somos pocos.

rolustar17 dijo...

hola codex oscura, hay alguna manera de hacer que elimine una cadena de caracteres y espacios en blanco?. porque cuando transformo un excel a txt me quedan espacios que quiero eliminar y seria mucho mas eficiente con un programa. Tambien tendria que eliminar muchos caracteres distintos. queria saber si es muy complejo de hacer

rolustar17 dijo...

pd del comentario de arriba: soy principiante en batch, ya hice algunos programas de backup y cosas sensilla pero no encuentro como hacer lo planteado arriba y no comprendo muy bien el codigo de tu programa. no entiendo como los borra. estaria bueno que alguien subiera tutoriales de como utilizar cmd/batch ya que no hay muchos y no estan muy bien explicados. saludos