Script cmd para extraer solo números en un texto.

Iniciado por lizana16288, 8 Abril 2016, 23:48 PM

0 Miembros y 1 Visitante están viendo este tema.

lizana16288

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!

Zomkar

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. 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?
Si vas a por ellos te llamarán violento.
Si explotas a cientos te verán como un ejemplo.


Eleкtro

#3
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.