¿Cómo se configuran las variables de entorno para un solo comando en Windows? [duplicar]


21

¿Hay alguna manera de establecer variables de entorno para un solo comando en Windows como ENVVAR=abc commanden Unix?

Las variables establecidas por setcomando en Windows parecen permanecer para los siguientes comandos, pero esto no es lo que quiero.


Creo que tendrás que desarmarlos tú mismo.
Zina

Respuestas:


29

¿Hay alguna manera de establecer variables de entorno para un solo comando?

Desde el cmdshell actual :

Tienes que borrar la variable tú mismo.

set ENVVAR=abc && dir & set ENVVAR=

De un archivo por lotes:

Puedes usar setlocaly endlocal.

@echo off
setlocal 
  set ENVVAR=abc && dir
endlocal

Use un cmdcaparazón secundario :

Puede usar cmd /cpara crear un shell hijo.

La variable se establece en el shell hijo y no afecta al shell padre (como se señala en un comentario de jpmc26 ).

cmd /C "set ENVVAR=abc && dir"

Otras lecturas

  • Un índice AZ de la línea de comando CMD de Windows : una excelente referencia para todo lo relacionado con la línea cmd de Windows.
  • cmd : inicie un nuevo shell CMD y (opcionalmente) ejecute un comando / programa ejecutable.
  • endlocal : finaliza la localización de los cambios del entorno en un archivo por lotes. Pase variables de un archivo por lotes a otro.
  • redirección : operadores de redireccionamiento.
  • set : muestra, establece o elimina variables de entorno CMD. Los cambios realizados con SET solo se mantendrán durante la sesión CMD actual.
  • setlocal : establece opciones para controlar la visibilidad de las variables de entorno en un archivo por lotes.

Otra opción es iniciar un cmdproceso separado y configurarlos allí. Ej cmd /C "set ENVVAR=abc && dir". Como no afectará el proceso padre, se "borrará" efectivamente al salir.
jpmc26

@ jpmc26 Buena. Gracias. Añadido a la respuesta.
DavidPostill

Ese primer método no borrará la variable si el comando falla.
nadie

@AndrewMedico Gracias. Buen punto. Respuesta arreglada.
DavidPostill
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.