Y a-t-il quelque chose comme la substitution de commandes dans Windows CLI?

14

Sous Linux (Bash), il existe un moyen d'utiliser une commande comme paramètre pour une autre commande, en utilisant des ticks arrière:

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

Cela imprimerait:

===== L'heure actuelle est: 12: 22: 34.68 =====

Existe-t-il un moyen de le faire dans cmd.exe sur WIndows?

Cristi Diaconescu
la source
1
voir cet article
Prince John Wesley
Voir aussi ce post ( utilisation de la commande doskey de cmd )
misterjaytee
@misterjaytee: La substitution de commandes et les alias sont des choses différentes.
user1686
@grawity - Merci de l'avoir signalé - Note à soi-même: doit lire la question correctement avant de répondre ...
misterjaytee

Réponses:

9

Essaye ça:

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

Je sais que ce n'est peut-être pas ce que vous voulez, parce que vous avez mentionné la substitution de commande ...

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

Pour plus de conseils sur l'utilisation de usebackqcette commande:

for /?
Kurt Pfeifle
la source
4
Oui, for /fc'est ce que je cherchais. Merci! Sur une note latérale: C'est tellement maladroit et difficile à retenir (par rapport à la manière bash). Je devrais abandonner la "programmation de chauve-souris" et apprendre quelque chose de plus productif - PowerShell peut-être?
Cristi Diaconescu
3

Sous Windows, l'opérateur '()' a un comportement similaire à la substitution de commandes Bash.

Ce script Linux:

my_linux_variable=$(ls)
my_alternate_linux_variable=`ls`

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

donne un résultat similaire à Windows PowerShell:

$my_windowsPS_variable = (dir)

$my_windowsPS_variable

et en tant que Windows CMD:

set my_windowsCMD_variable=(dir)
%my_windowsCMD_variable%
DDS
la source
9
L'exemple Windows CMD est incorrect. Les parens dans le shell cmd exécutent simplement une commande dans un sous-shell. La variable env est définie sur "(dir)" et elle est exécutée sur la deuxième ligne (lorsque la variable env est entourée de%) - pas vraiment la substitution que vous souhaitez.
davidbak
1
ceci est incorrect pour le comportement de Windows cmd.exe
JJS
C'est PowerShell, alors que la question concerne cmd.exe
Raúl Salinas-Monteagudo