Existe-t-il un moyen de pousser et de faire apparaître toutes les variables d'environnement dans un script batch? Par exemple, je voudrais faire quelque chose comme ceci:
pushEnvironmentVariables
call "%VS140COMNTOOLS%\vsvars32.bat"
(do some stuff...)
popEnvironmentVariables
pushEnvironmentVariables
call "%VS90COMNTOOLS%\vsvars32.bat"
(do some other stuff...)
popEnvironmentVariables
batch
environment-variables
שלומי שטיין
la source
la source
PATH
- juste par exemple ou pour une raison quelconque. Je suis particulièrement intéressé par push / pop la variable path. Y a-t-il quelque chose qui parle contre la sauvegarde / restaurationPATH
?Un peu tard pour la scène mais ça passe quand même. Vous trouverez ci-dessous une implémentation d'une structure de données de pile dans les scripts batch de Windows.
Fonctionnalités:
J'utilise la pile dans mes fichiers de commandes pour suivre les appels de sous-programme. Chaque sous-programme dans mes fichiers de commandes commence par Call: Push% 0 , qui pousse le nom du sous-programme actuel sur la pile et se termine par Call: Pop .
Certains trouveront peut-être un sur-kill pour les scripts batch mais j'ai aimé le créer et j'espère que quelqu'un trouvera cela utile, profitez-en .
Ainsi, pour pousser toutes les variables d'environnement, vous pouvez appeler: PushAllEnvironmentVariables, pour restaurer toutes les variables d'environnement, vous pouvez appeler: PopAllEnvironmentVariables
la source
For /f "Tokens=* Delims=" %%a In ('Set') Do Call :Push "%%a"
Pour restaurer toutes les variables d'environnement que vous pouvez utiliser:For /l %%a In (!$Stack[0]!,-1,1) Do (Set !$Stack[%%a]!)
J'ai mis à jour la réponse pour inclure 2 sous-programmes qui implémentent cela.