Lote equivalente de Bash backticks

Cuando trabajo con Bash, puedo poner la salida de un comando en otro comando como ese:

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.

Puede hacerlo redirigiendo la salida a un archivo primero. Por ejemplo:

 echo zz > bla.txt set /p VV= 

Puede obtener una funcionalidad similar utilizando los scripts cmd.exe con el comando for /f :

 for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a 

Sí, es algo no obvio (por decir lo menos), pero es lo que está ahí.

Ver for /? para los detalles sangrientos.

Sidenote: Pensé que para usar ” echo ” dentro de los backticks en un comando ” for /f ” tendría que hacerse usando ” cmd.exe /c echo Test ” ya que echo es un comando interno para cmd.exe , pero funciona de la manera más natural. Las secuencias de comandos de lotes de Windows siempre me sorprenden de alguna manera (pero no siempre en el buen sentido).

Lea la documentación del comando “para”: for /?

Lamentablemente, no he iniciado sesión en Windows para comprobarlo yo mismo, pero creo que algo así puede aproximarse a lo que desea:

 for /F %i in ('echo Test') do my_command %i 

Siempre puedes ejecutar Bash dentro de Windows. Lo hago todo el tiempo con MSYS (mucho más eficiente que Cygwin ).

Tal vez estoy arruinando la syntax del estándar for /f método for /f , pero cuando puse un comando muy complejo que involucra && y | dentro de los backticks en el límite de for /f , causa problemas. Una ligera modificación de lo habitual es posible manejar un comando de complejidad arbitrario:

 SET VV=some_command -many -arguments && another_command -requiring -the-other -command | handling_of_output | more_handling for /f "usebackq tokens=*" %%a in (`%VV%`) do mycommand %%a 

Al poner primero su comando completo y complejo en una variable, luego poner una referencia a la variable en el límite en lugar de poner el comando complejo directamente en el límite del bucle for, puede evitar problemas de interpretación de syntax. Actualmente, si copio el comando exacto que configuré en la variable VV en el ejemplo anterior en donde se usa, %VV% , causa errores de syntax.

    Intereting Posts