Equivalente batch di apici di Bash

Quando lavoro con Bash, posso mettere l’output di un comando in un altro comando in questo modo:

my_command `echo Test` 

sarebbe la stessa cosa di

 my_command Test 

(Ovviamente, questo è solo un esempio non pratico.)

Mi sto solo chiedendo se puoi fare la stessa cosa in Batch.

Puoi farlo reindirizzando prima l’output in un file. Per esempio:

 echo zz > bla.txt set /p VV= 

È ansible ottenere una funzionalità simile utilizzando gli script cmd.exe con il comando for /f :

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

Sì, è un po ‘non ovvio (per non dire altro), ma è quello che c’è.

Vedi for /? per i dettagli sanguinosi.

Sidenote: ho pensato che usare ” echo ” all’interno degli apici inversi in un comando ” for /f ” avrebbe dovuto essere fatto usando ” cmd.exe /c echo Test ” dato che echo è un comando interno a cmd.exe , ma funziona nel modo più naturale. Gli script batch di Windows mi sorprendono sempre in qualche modo (ma non di solito in senso positivo).

Leggi la documentazione per il comando “for”: for /?

Purtroppo non sono connesso a Windows per controllarlo da solo, ma penso che qualcosa del genere possa approssimare quello che vuoi:

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

È sempre ansible eseguire Bash in Windows. Lo faccio sempre con MSYS (molto più efficiente di Cygwin ).

Forse sto rovinando la syntax dello standard for /f metodo for /f , ma quando metto un comando molto complesso che coinvolge && e | all’interno dei backtick nel limite del for /f , causa problemi. Una leggera modifica dal solito è ansible per gestire un comando di complessità 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 

Mettendo per primo il comando completo e complesso in una variabile, quindi ponendo un riferimento alla variabile nel limite anziché mettere il comando complesso direttamente nel limite del ciclo for, è ansible evitare problemi di interpretazione della syntax. Attualmente se copio il comando esatto che ho impostato sulla variabile VV nell’esempio sopra in cui è stato utilizzato, %VV% , causa errori di syntax.