2010-07-07 22 views
8

Necesito hacer el equivalente de¿Es posible configurar una variable de entorno a la salida de un comando en cmd.exe

set ENVAR=`some-command` 

En el script/ventanas cmd.exe. Cygwin no es una opción.

Para marcas de bonificación: ¿Hay algún equivalente cmd.exe de backticks en general?

+2

Instalar Powershell. –

+0

Tengo un programa de terceros que llama a cmd.exe con una secuencia de comandos y comprueba la variable de entorno CAUSA después de que termina la secuencia de comandos. No puedo usar otro shell directamente. –

Respuesta

7

Una manera rápida y sucia sería redirigirlo a un archivo y luego leer esto, p. Ej.

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

creo for también le puede ayudar, pero no recuerdo la sintaxis exacta. Pruebe algo como

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

probablemente me olvidó alguna token o delim en las opciones ...

1
No

"probablemente", es absolutamente imprescindible para especificar "delims =" como último símbolo (medios, sin delimitadores), a menos que desee que su variable solo contenga hasta el primer espacio de los datos de entrada.

I.e.

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