¿Hay alguna manera de insertar y reventar todas las variables de entorno en un script por lotes? Por ejemplo, me gustaría hacer algo como esto:
pushEnvironmentVariables
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
popEnvironmentVariables
pushEnvironmentVariables
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
popEnvironmentVariables
batch
environment-variables
שלומי שטיין
fuente
fuente
PATH
, solo por ejemplo o por alguna razón. Estoy especialmente interesado en push / pop la variable de ruta. ¿Hay algo que hable en contra de la copia de seguridad / restauraciónPATH
?Un poco tarde a la escena pero aquí va de todos modos. A continuación se muestra una implementación de una estructura de datos de pila en secuencias de comandos por lotes de Windows.
caracteristicas:
Utilizo la pila en mis archivos por lotes para realizar un seguimiento de las llamadas de subrutina. Cada subrutina en mis archivos por lotes comienza con Call: Push% 0 , que empuja el nombre de la subrutina actual a la pila y termina con Call: Pop .
Algunos pueden encontrar una eliminación excesiva para las secuencias de comandos por lotes, pero disfruté creándolo y espero que alguien lo encuentre útil, disfruten .
Entonces, para enviar todas las variables de entorno, puede llamar a: PushAllEnvironmentVariables, para restaurar todas las variables de entorno, puede llamar a: PopAllEnvironmentVariables
fuente
For /f "Tokens=* Delims=" %%a In ('Set') Do Call :Push "%%a"
Para restaurar todas las variables de entorno que puede usar:For /l %%a In (!$Stack[0]!,-1,1) Do (Set !$Stack[%%a]!)
He actualizado la respuesta para incluir 2 subrutinas que implementen esto.