Lorsque je travaille avec Bash, je peux mettre la sortie d'une commande dans une autre commande comme ceci:
my_command `echo Test`
serait la même chose que
my_command Test
(De toute évidence, ce n'est qu'un exemple non pratique.)
Je me demande simplement si vous pouvez faire la même chose dans Batch.
Vous pouvez le faire en redirigeant d'abord la sortie vers un fichier. Par exemple:
echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%
Vous pouvez obtenir une fonctionnalité similaire en utilisant des scripts cmd.exe avec le for /f
commande:
for /f "usebackq tokens=*" %%a in (`echo Test`) do my_command %%a
Oui, ce n'est pas évident (pour dire le moins), mais c'est ce qui est là.
Voir for /?
pour les détails sanglants.
Sidenote: Je pensais que pour utiliser "echo
" à l'intérieur des backticks dans un "for /f
"la commande devrait être effectuée en utilisant" cmd.exe /c echo Test
"puisque echo
est une commande interne à cmd.exe
, mais cela fonctionne de manière plus naturelle. Les scripts batch de Windows me surprennent toujours en quelque sorte (mais généralement pas dans le bon sens).
Lisez la documentation de la commande "for": for /?
Malheureusement, je ne suis pas connecté à Windows pour le vérifier moi-même, mais je pense que quelque chose comme ça peut approximer ce que vous voulez:
for /F %i in ('echo Test') do my_command %i
Peut-être que je bousille la syntaxe de la norme for /f
méthode, mais quand je mets une commande très complexe impliquant && et | dans les backticks dans la limite du for /f
, cela cause des problèmes. Une légère modification par rapport à l'habituel est possible pour gérer une commande de complexité arbitraire:
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
En plaçant d'abord votre commande complète et complexe dans une variable, puis en plaçant une référence à la variable dans la limite plutôt que de placer la commande complexe directement dans la limite de la boucle for, vous pouvez éviter les problèmes d'interprétation de la syntaxe. Actuellement, si je copie la commande exacte que j'ai définie dans la variable VV
dans l'exemple ci-dessus, où elle est utilisée, %VV%
, il provoque des erreurs de syntaxe.