DynSetEnv |
Écrit par Gilles LAURENT | |
11-01-2009 | |
Définir ou supprimer des variables d'environnement dynamiques Quelques récentes discussions sur le Forum Scripting, que vous pouvez retrouver ici et là, mettent en évidence les limitations de plusieurs commandes batch et plus particulièrement les limitations de la commande builtin SET de l'interpréteur de commandes CMD.EXE. En effet, il s'avère que celle-ci possède les limitations suivantes :
J'ai donc essayé de contourner ces limitations ce qui m'a amené à écrire l'outil DynSetEnv. Cet outil est donc un complément de la commande builtin SET. L'outil DynSetEnv prend donc en charge le flux stdin en provenance d'un pipe, le mode arithmétique sur un entier 64 bits signé ainsi que la propagation dynamique des variables dans les processus parents. Les variables sont définies de manière dynamique donc aucune modification est apportée à la base de registre Windows. Si l'option de propagation est utilisée alors la variable d'environnement sera injectée dans tous les processus parents jusqu'au processus shell, soit par défaut Explorer.exe. Dans ce cas, les variables définies seront disponibles, d'une part dans les processus parents en cours d'exécution et également dans les nouvelles consoles et processus car ceux-ci hériteront de l'environnement du shell (processus racine). Note¹: Si le processus DynSetEnv s'exécute au sein d'un job Windows de type RunAs alors la propagation des variables dans les processus parents sera automatiquement désactivée. Cette restriction est implémentée par mesure de sécurité dans le but d'éviter de corrompre l'environnement des processus système. Note²: Le moteur Microsoft JScript est utilisé pour la résolution des opérations arithmétiques. De ce fait, l'outil DynSetEnv est compatible avec tous les opérateurs arithmétiques supportés par cette technologie et reprend également ses limitations. Par exemple, le calcul sur un entier 64 bits signé est "garanti" pour une valeur comprise entre +/-9e+15 (à priori cette limite est en fonction des plateformes). L'outil DynSetEnv permet de définir une variable d'environnement dynamique accessible dans la console WSH Shell. L'exemple ci-dessous utilise l'option de propagation pour être en mesure de réaliser cette opération. Par exemple : WSH D:\Test> ' création d'une variable d'environnement à l'aide de la WSH D:\Test> ' commande builtin SET WSH D:\Test> @set testvar=test WSH D:\Test> ' la console WSH Shell exécute un processus enfant pour les WSH D:\Test> ' commandes de l'interpréteur CMD.EXE WSH D:\Test> ' lecture de la variable d'environnement WSH D:\Test> @echo %testvar% %testvar% WSH D:\Test> ' la variable d'environnement n'existe plus car l'interpréteur WSH D:\Test> ' CMD.EXE est terminé WSH D:\Test> ' nouvelle tentative avec l'outil DynSetEnv WSH D:\Test> ' on utilise ici l'option de propagation WSH D:\Test> @DynSetEnv -name testvar -value test -recurse WSH D:\Test> ' lecture de la variable d'environnement WSH D:\Test> @echo %testvar% test WSH D:\Test> ' opération achevée avec succès ;-) WSH D:\Test> ' la variable d'environnement est bien présente dans WSH D:\Test> ' le processus père ! Historique: Version 1.0.0.2 - 20090212 Version 1.0.0.1 - 20090111 Plateformes supportées: Usage: Aide en ligne: Commands: Examples: Téléchargement: |
|
Dernière mise à jour : ( 15-02-2009 ) |
< Précédent | Suivant > |
---|