Uno ha bisogno di essere un po 'attenti, dal momento che il comando batch di Windows:
for /f "delims=" %%a in ('command') do @set theValue=%%a
non ha la stessa semantica della shell dichiarazione Unix:
theValue=`command`
Si consideri il caso in cui il comando non riesce , causando un errore.
Nella versione shell Unix, il compito di "theValue" si verifica ancora, qualsiasi valore precedente da sostituire con un valore vuoto.
Nella versione batch di Windows, è il "per" comando che gestisce l'errore, e la clausola "fare" non è mai raggiunto - in modo che qualsiasi valore precedente di "theValue" saranno mantenuti.
Per ottenere più semantica Unix-like in script batch di Windows, è necessario assicurarsi che l'assegnazione si svolge:
set theValue=
for /f "delims=" %%a in ('command') do @set theValue=%%a
Non riuscendo a cancellare il valore della variabile durante la conversione di uno script UNIX a Windows in batch può essere una causa di errori sottili.
fonte
2012-08-22 08:58:10
usare 'for/f" delim = "% a in ('ver') do @set foobar =% a' al prompt dei comandi. usa 'for/f" delims = "%% a in ('ver') do @set foobar = %% a' nei file di script – georg
Un'alternativa leggera è Gnu su Windows (https://github.com/bmatzelle/gow/wiki). Basta aprire un prompt dei comandi ed eseguire 'bash'. Quindi puoi scrivere i comandi di bash. Puoi anche eseguire script bash. – Nathan
Si noti che se il comando include una pipe, è necessario sfuggire con un segno di omissione, ad esempio: per/f "delim =" %% a in ('echo foobar^| sed -es/foo/fu /') do @set foobar = %% a – yoyo