Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[BASH/VBS] Variables d'environnements utilisateurs

11 réponses
Avatar
Stéphane
Bonjour,
J'ai créé un petit script qui utilise les méthodes de définition des
variable d'environnement de l'utilisateur :

Set oShell=Wscript.CreateObject("WScript.Shell")
Set oEnv=oShell.Environment("user")

oEnv("ENVAR")="VAR 01"
oShell.Run "cmd /K echo %ENVAR%"

Le problème que je rencontre est que je n'arrive pas à accèder à ma variable
dans le même script avec le run. J'ai essayé diverses stratégie et
impossible...

Est-ce que quelqu'un aurait une idée pour m'aider à résoudre mon problème ?

Cordialement,

Stéphane

10 réponses

1 2
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonjour !

Ce n'est pas possible. Le Run s'exécute dans un autre environnement, qui
a ses propres variables (d'environnement).
Il n'y a ni héritage, ni transmission, des variables d'environnement.

Une solution (pas terrible), c'est d'écrire un mini fichier, et de
l'appeler dans le batch (du Run).
Exemple :
écrire, dans le fichier toto.bat, la chaîne :
SET ENVAR=VAR01
et, dans le batch :
CALL toto.bat

Evidemment, en prod, on a intérêt à passer par le dossier %TEMP%. Ici,
c'était juste un exemple.

@-salutations
--
Michel Claveau
Avatar
Gilles LAURENT [MVP]
"MCI (ex do ré Mi chel la si do) [MVP]"
a écrit dans le message de
news:%
| Bonjour !

Bonjour,

| Ce n'est pas possible. Le Run s'exécute dans un autre environnement,
| qui a ses propres variables (d'environnement).
| Il n'y a ni héritage, ni transmission, des variables d'environnement.
[...]

--- CodeSnippet.vbs ---
With CreateObject("WScript.Shell")
.Run "DynSetEnv -name envar -value var01",0,True
.Run "cmd /k echo %envar%"
End With
--- CodeSnippet.vbs ---

L'outil DynSetEnv permet l'héritage car la variable d'environnement est
automatiquement injectée dans le moteur de script (i.e CScript.exe ou
WScript.exe). La nouvelle console hérite du bloc d'environnement du
processus père donc la variable d'environnement est disponible.
http://glsft.free.fr/index.php?option=com_content&task=view&idg&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Re !

DynSetEnv



Hop, téléchargé. Ça, c'est un outil qui va m'être très utile.
Merci.

@-salutations
--
Michel Claveau
Avatar
Stéphane
Bonjour,
Je n'ai pas eu le temps de tester l'outil mais merci en tout cas.

A+

"Gilles LAURENT [MVP]" a écrit dans le message de news:

"MCI (ex do ré Mi chel la si do) [MVP]"
a écrit dans le message de
news:%
| Bonjour !

Bonjour,

| Ce n'est pas possible. Le Run s'exécute dans un autre environnement,
| qui a ses propres variables (d'environnement).
| Il n'y a ni héritage, ni transmission, des variables d'environnement.
[...]

--- CodeSnippet.vbs ---
With CreateObject("WScript.Shell")
.Run "DynSetEnv -name envar -value var01",0,True
.Run "cmd /k echo %envar%"
End With
--- CodeSnippet.vbs ---

L'outil DynSetEnv permet l'héritage car la variable d'environnement est
automatiquement injectée dans le moteur de script (i.e CScript.exe ou
WScript.exe). La nouvelle console hérite du bloc d'environnement du
processus père donc la variable d'environnement est disponible.
http://glsft.free.fr/index.php?option=com_content&task=view&idg&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Avatar
Stéphane
Bonjour,
J'ai testé et ça marche bien.
Un deuxième problème est cependant apparu que je n'avais pas avant :p .
Je n'arrive pas à passer de variable avec accent... Est ce qu'il y aurait
une parade ou une solution de conversion qui me permettrait de passer des
variables avec accent ?

Merci


"Stéphane" a écrit dans le message de news:
%23b4z%
Bonjour,
Je n'ai pas eu le temps de tester l'outil mais merci en tout cas.

A+

"Gilles LAURENT [MVP]" a écrit dans le message de news:

"MCI (ex do ré Mi chel la si do) [MVP]"
a écrit dans le message de
news:%
| Bonjour !

Bonjour,

| Ce n'est pas possible. Le Run s'exécute dans un autre environnement,
| qui a ses propres variables (d'environnement).
| Il n'y a ni héritage, ni transmission, des variables d'environnement.
[...]

--- CodeSnippet.vbs ---
With CreateObject("WScript.Shell")
.Run "DynSetEnv -name envar -value var01",0,True
.Run "cmd /k echo %envar%"
End With
--- CodeSnippet.vbs ---

L'outil DynSetEnv permet l'héritage car la variable d'environnement est
automatiquement injectée dans le moteur de script (i.e CScript.exe ou
WScript.exe). La nouvelle console hérite du bloc d'environnement du
processus père donc la variable d'environnement est disponible.
http://glsft.free.fr/index.php?option=com_content&task=view&idg&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr








Avatar
Stéphane
Petite correction c'est le contenu de ma variable qui a des accents .


"Stéphane" a écrit dans le message de news:

Bonjour,
J'ai testé et ça marche bien.
Un deuxième problème est cependant apparu que je n'avais pas avant :p .
Je n'arrive pas à passer de variable avec accent... Est ce qu'il y aurait
une parade ou une solution de conversion qui me permettrait de passer des
variables avec accent ?

Merci


"Stéphane" a écrit dans le message de news:
%23b4z%
Bonjour,
Je n'ai pas eu le temps de tester l'outil mais merci en tout cas.

A+

"Gilles LAURENT [MVP]" a écrit dans le message de news:

"MCI (ex do ré Mi chel la si do) [MVP]"
a écrit dans le message de
news:%
| Bonjour !

Bonjour,

| Ce n'est pas possible. Le Run s'exécute dans un autre environnement,
| qui a ses propres variables (d'environnement).
| Il n'y a ni héritage, ni transmission, des variables d'environnement.
[...]

--- CodeSnippet.vbs ---
With CreateObject("WScript.Shell")
.Run "DynSetEnv -name envar -value var01",0,True
.Run "cmd /k echo %envar%"
End With
--- CodeSnippet.vbs ---

L'outil DynSetEnv permet l'héritage car la variable d'environnement est
automatiquement injectée dans le moteur de script (i.e CScript.exe ou
WScript.exe). La nouvelle console hérite du bloc d'environnement du
processus père donc la variable d'environnement est disponible.
http://glsft.free.fr/index.php?option=com_content&task=view&idg&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr












Avatar
Gilles LAURENT [MVP]
"Stéphane" a écrit dans le message de
news:
| Petite correction c'est le contenu de ma variable qui a des accents .

Merci pour ce retour.
Il y avait en effet un bug de conversion ANSI vers OEM.
Les caractères accentués sont maintenant supportés.

DynSetEnv :
http://glsft.free.fr/index.php?option=com_content&task=view&idg&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Aaaarrrggghhh !!!

Encore une nouvelle version.
Bon, n'ayant pas réussi à utiliser DynSetEnv-Update, j'ai re-téléchargé
tout le paquet.
--
@-salutations
--
Michel Claveau
Avatar
Stéphane
Re bonjour,
Et merci à toi pour cette correction super rapide :) .
Ton outil et ton site sont super utiles !!!

.A+


"Gilles LAURENT [MVP]" a écrit dans le message de news:
%23C$
"Stéphane" a écrit dans le message de
news:
| Petite correction c'est le contenu de ma variable qui a des accents .

Merci pour ce retour.
Il y avait en effet un bug de conversion ANSI vers OEM.
Les caractères accentués sont maintenant supportés.

DynSetEnv :
http://glsft.free.fr/index.php?option=com_content&task=view&idg&Itemid(

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




Avatar
Gilles LAURENT [MVP]
"Stéphane" a écrit dans le message de
news:
| Re bonjour,

Re bonjour,

| Et merci à toi pour cette correction super rapide :) .
| Ton outil et ton site sont super utiles !!!

Merci pour ce retour.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
1 2