Hola a todos,
Controlo más bien poco Batch y no veo la forma de poder guardar la salida de varios comandos concatenados con | a una variable.
Os pongo un ejemplo de lo que pretendo en sh:
fichero=$(ls -1 | grep fichero_log | sort | tail -n 1)
tail -f $fichero
Que sería lo mismo que:
tail -f `ls -1 | grep fichero_log | sort | tail -n 1`
Dispongo de los comandos tail.exe y grep.exe para facilitarme un poco la vida (y la sintaxis) a la hora de elaborar scripts en Batch. Lo único que me faltaría sería ver la forma de guardar la salida de los comandos con | en una variable.
Gracias de antemano!
No puedes hacerlo diréctamente como en Bash.
For /F "Tokens=*" %%# in ('comando1 ^| comando2') Do (Set "Variable=%%#")
Aprende el uso del FOR /F, porque lo vas a necesitar.
Saludos
Muchas gracias por la ayuda! Ya veo que parece ser algo así como una navaja suiza.
Como nota, indicar que he tenido que usar un único "%" antes de "#" para que me funcionase. Uso Windows 7 Profesional 64 bits por si tuviese que ir.
Lo dicho, gracias por la ayuda; me lo anoto que a buen seguro tendré que usarlo muchas veces.
Cita de: ddffgg en 7 Febrero 2013, 11:30 AMComo nota, indicar que he tenido que usar un único "%" antes de "#" para que me funcionase.
Si lo ejecutas diréctamente desde la consola sólo tienes que usar un símbolo %, pero en un script tienes que escribir dos %%, para que al ejecutarlo la CMD reconozca el símbolo, en otros casos tendrás que usar 4, 6, 8 símbolos, y todos los que hagan falta dependiendo del subnivel en el que se encuentre la variable... pero esto ya es otro tema.
Bienvenido al extraño y liante (pero no dificil) Batch.
Saludos!