¿Hay algo como la sustitución de comandos en la CLI de Windows?

14

En Linux (Bash), hay una manera de usar un comando como parámetro para otro comando, usando back-ticks:

> echo ===== `time` =====

Esto imprimiría:

===== La hora actual es: 12: 22: 34.68 =====

¿Hay alguna manera de hacer esto en cmd.exe en Windows?

Cristi Diaconescu
fuente
1
ver esta publicación
Prince John Wesley
También vea esto en esta publicación ( uso del comando doskey de cmd )
misterjaytee
@misterjaytee: La sustitución de comandos y los alias son cosas diferentes.
user1686
@grawity - Gracias por señalarlo - Nota personal: debe leer la pregunta correctamente antes de responder ...
misterjaytee

Respuestas:

9

Prueba esto:

echo. ===== %time% =====

Sé que esto puede no ser lo que quieres, porque mencionaste la sustitución de comandos ... Entonces, esto puede ser:

for /f "usebackq tokens=*" %i in (`date/t&time/t`) do echo.  ===== %i =====

Para obtener más sugerencias sobre el uso de usebackqprobar este comando:

for /?
Kurt Pfeifle
fuente
44
Sí, for /fes lo que estaba buscando. ¡Gracias! En una nota al margen: es muy torpe y difícil de recordar (en comparación con la manera bash). Debería abandonar la "programación de murciélagos" y aprender algo más productivo.
Cristi Diaconescu
3

En Windows, el operador '()' tiene un comportamiento similar al de la sustitución del comando Bash.

Este script de Linux:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

echo $my_linux_command=$(ls)
echo $my_alternate_linux_command=`ls`

da un resultado similar al de Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

y como Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%
DDS
fuente
99
El ejemplo de Windows CMD está mal. Parens en cmd shell solo ejecuta un comando en una subshell. Env var se establece en "(dir)" y se ejecuta en la segunda línea (cuando env var está rodeado por%), no es realmente la sustitución que desea.
davidbak
1
esto es incorrecto para el comportamiento de Windows cmd.exe
JJS
Esto es powershell, mientras que la pregunta es sobre cmd.exe
Raúl Salinas-Monteagudo