2010-07-07 4 views
8

que je dois faire l'équivalent deEst-il possible de définir une variable d'environnement à la sortie d'une commande dans cmd.exe

set ENVAR=`some-command` 

Dans Windows/script cmd.exe. Cygwin n'est pas une option.

Pour les marques de bonus: Existe-t-il un équivalent cmd.exe de backticks en général?

+2

Installez Powershell. –

+0

J'ai un programme tiers qui appelle cmd.exe avec un script et vérifie la variable d'environnement CAUSE après la fin du script. Je ne peux pas utiliser un autre shell directement. –

Répondre

7

Un moyen rapide et sale serait de le rediriger vers un fichier, puis de le lire, par ex.

some-command>out.txt 
set /p ENVAR=<out.txt 

Je pense que for peut aussi vous aider, mais je ne me souviens pas la syntaxe exacte. Essayez quelque chose comme

for /f "usebackq" %x in (`some-command`) do set ENVAR=%x 

J'ai probablement oublié une token ou delim dans les options ...

1

Non « probablement », il est absolument indispensable de préciser « delims = » en dernier jeton (moyen, pas délimiteurs), sauf si vous voulez que votre variable ne contienne que le premier espace des données d'entrée.

à savoir

FOR /F "usebackq delims=" %%a IN (`cygpath.exe -u "%~1"`) DO (
    SET CMDNAME=%%~a 
    SHIFT 
) 
Questions connexes