Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: lizana16288 en 8 Abril 2016, 23:48 pm



Título: Script cmd para extraer solo números en un texto.
Publicado por: lizana16288 en 8 Abril 2016, 23:48 pm
Buenas!
Me gustaría crear un script en Windows, para coger un texto y extraer únicamente los números.
Por ejemplo:
12qw34er  sería 1234.
En linux es más fácil, simplemente:
grep -o '[0-9][0-9]*' texto>numeros.

Y en powershell:
powershell @(Get-Content texto) -replace '\D',''>numeros.

Cómo puedo hacerlo en el cmd de toda la vida?
Gracias! Buen foro!


Título: Re: Script cmd para extraer solo números en un texto.
Publicado por: Zomkar en 9 Abril 2016, 07:14 am
Que yo sepa es imposible. Deberías usas FINDSTR /R o similar, pero no veo que tenga la opcion para mostrar solo lo que coincide (o lo que no).

También podría ser que esto te ayudase http://ss64.com/nt/syntax-replace.html (http://ss64.com/nt/syntax-replace.html). Si los datos tienen una estructura y es conocida, podrías eliminar lo que no necesitas por ejemplo. Aunque creo que no es lo que pides.

Porque no usar powershell? O grep para win32?


Título: Re: Script cmd para extraer solo números en un texto.
Publicado por: lizana16288 en 9 Abril 2016, 13:22 pm
up?


Título: Re: Script cmd para extraer solo números en un texto.
Publicado por: Eleкtro en 30 Abril 2016, 13:55 pm
No existe ningún miembro para llevar a cabo esa finalidad. Los comandos FIND y FINDSTR se limitan a mostrar la linea completa de la coincidencia del patrón de búsqueda o expresión regular, no extrae la porción que coincide.

Tampoco existe un búcle de tipo for-each capaz de iterar cada caracter de un string, puedes usar un For corriente que es lo más parecido, pero primero tendrías que tokenizar el texto de entrada, es decir, modificar manualmente el archivo de texto para darle un formato compatible partiendolo en tokens legibles por dicho For, por ejemplo añadiendo un espacio en blanco entre cada caracter ...manualmente, lo cual no es una solución viable al no ser automatizable (en Batch).

¿Por qué la necesidad de hacerlo en Batch si ya sabes como llevar a cabo la misma tarea en otros lenguajes?, Batch es una herramienta extremadamente limitada.

Saludos.