Question

Lorsque vous travaillez 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, cela est juste un exemple non pratique.)

Je me demande si vous pouvez faire la même chose dans le lot.

Était-ce utile?

La solution

Vous pouvez le faire en redirigeant la sortie vers un fichier. Par exemple:

echo zz > bla.txt
set /p VV=<bla.txt
echo %VV%

Autres conseils

Vous pouvez obtenir une fonctionnalité similaire en utilisant des scripts cmd.exe avec la commande for /f:

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

Oui, il est un peu non évidente (pour le moins), mais il est ce qui est là.

Voir for /? pour les détails sordides.

Sidenote: Je pensais que d'utiliser « echo » à l'intérieur des backticks dans une commande « for /f » aurait besoin d'être fait en utilisant « cmd.exe /c echo Test » depuis echo est une commande interne à cmd.exe, mais il fonctionne de la manière plus naturelle. scripts batch Windows me surprennent toujours en quelque sorte (mais généralement pas dans le bon sens).

Lire la documentation de la commande "pour": for /?

Malheureusement, je ne suis pas connecté à Windows pour vérifier moi-même, mais je pense que quelque chose comme cela peut rapprocher ce que vous voulez:

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

Vous pouvez toujours courir Bash l'intérieur de Windows. Je le fais tout le temps avec MSYS (beaucoup plus efficace que Cygwin ).

Peut-être que je vissant la syntaxe de la méthode standard de for /f, mais quand je mets une commande très complexe impliquant && et | dans les backticks dans la limite du for /f, il provoque des problèmes. Une légère modification de l'habituel est possible de 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 mettant votre commande complète et complexe dans une variable d'abord, puis mettre une référence à la variable dans la limite plutôt que de mettre la commande complexe directement dans la limite de la boucle, vous pouvez éviter les problèmes d'interprétation de syntaxe. À l'heure actuelle si je copie la commande exacte que j'ai mis à la variable VV dans l'exemple ci-dessus dans lequel il est utilisé, %VV%, il provoque des erreurs de syntaxe.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top