Cuando trabajo con Bash, puedo poner la salida de un comando en otro comando así:
my_command `echo Test`
sería lo mismo que
my_command Test
(Obviamente, este es solo un ejemplo no práctico).
Me pregunto si puedes hacer lo mismo en Batch.
bash
batch-file
backticks
MiffTheFox
fuente
fuente
Respuestas:
Puede hacerlo redirigiendo la salida a un archivo primero. Por ejemplo:
fuente
for /f
variante es mucho mejor.%random%
Puede obtener una funcionalidad similar usando scripts cmd.exe con el
for /f
comando:Sí, no es un poco obvio (por decir lo menos), pero es lo que hay.
Consulte
for /?
los detalles sangrientos.Nota al margen: Pensé que para usar "
echo
" dentro de las comillas inversas en unfor /f
comando " " tendría que hacerse usando "cmd.exe /c echo Test
" ya queecho
es un comando interno decmd.exe
, pero funciona de una manera más natural. Los scripts por lotes de Windows siempre me sorprenden de alguna manera (pero generalmente no en el buen sentido).fuente
system()
estaba bien, iirc, ya que inicia un shell en cualquier caso, pero .NETProcess.Start
necesita invocar explícitamente el shell. Algo así, iirc. En cualquier caso, considero que esta es la mejor respuesta que la aceptada :-)for
no lastimar pero confundir el problema. ¿Qué hay de esto?for /f %%a in ('"echo Test"') do my_command %%a
tokens=*
es importante. De lo contrario, si el resultado del comando incluye espacios, solo se emite la primera palabra. Ejecutar este en el símbolo:for /f %a in ('"echo foo bar"') do echo "%a"
. Se imprimirá"foo"
.Lea la documentación del comando "for":
for /?
Lamentablemente, no he iniciado sesión en Windows para verificarlo yo mismo, pero creo que algo como esto puede aproximarse a lo que desea:
fuente
Siempre puedes ejecutar Bash dentro de Windows. Lo hago todo el tiempo con MSYS (mucho más eficiente que Cygwin ).
fuente
Quizás estoy arruinando la sintaxis del
for /f
método estándar , pero cuando pongo un comando muy complejo que involucra && y | dentro de las comillas invertidas en el límite delfor /f
, causa problemas. Es posible una ligera modificación de lo habitual para manejar un comando de complejidad arbitraria:Al poner su comando completo y complejo en una variable primero, luego poner una referencia a la variable en el límite en lugar de colocar el comando complejo directamente en el límite del bucle for, puede evitar problemas de interpretación de sintaxis. Actualmente, si copio el comando exacto que configuré en la
VV
variable en el ejemplo anterior en donde se usa,%VV%
causa errores de sintaxis.fuente