Batch - Variable d'environnement - Shell/Batch - Programmation
Marsh Posté le 16-02-2010 à 10:03:42
bonjour,
et si vous définissiez vos variables persistantes dans l'autoexec.bat ?
mais peut-etre cela pose-t il des pb de sécurité, notamment si vous stockez des mots de passe ?
Marsh Posté le 16-02-2010 à 10:07:14
Citation : comment créer, via un batch, des variables d'envrionnement |
En utilisant la commande SET, par exemple
SET ConnexionOracle=toto |
N.B. Sans guillemet.
Marsh Posté le 16-02-2010 à 10:07:15
Oui voià c'est ça...
En fait, pour être plus précis ce sont des chaines de connexions Oracle, des chemins de fichiers, des mots de passe, etc....
Et donc je suis à la recherche de solutions car actuellement chaque fichier contient les chemins et les chaines de connexions...quand tu sois en changer un, il faut tous les changer....
Donc une solution consisterait à stocker ça dans un fichier pour lire ce fichier...mais en batch c'est pas top, l'autre en utilisant des variables! Mais j'ai des soucis car quand je fais un SET c'est une variable locale que je ne peux utiliser dans d'autres batch.
Marsh Posté le 16-02-2010 à 10:12:31
olivthill a écrit :
N.B. Sans guillemet. |
Cela ne marche pas...C'est Ok si tu utilises un batch, mais si tu fais un set dans un batch et que tu aimerais réutiliser cette variable dans un autre batch...ce n'es tpas possible
Marsh Posté le 16-02-2010 à 10:13:08
après faut voir le code, car ça m'étonne qu'on ne puisse appeler un fichier pour chacune des variables dont vous avez besoin avec un for /f....
Marsh Posté le 16-02-2010 à 10:18:28
Je t'explique :
Actuellement on va dire j'ai 3 batchs (j'en ai bien plus, mais pour l'exemple ça suffit).
Dans ces trois fichiers j'ai :
sqlplus user/mdp@bdd @test.sql
Moi j'aimerais que ça "user/mdp@bdd" se trouve dans une variable d'environnement comme ça si la connexion change, je n'ai à le faire qu'une seule fois.
Marsh Posté le 16-02-2010 à 10:27:29
brandtance a écrit : Je t'explique : |
en gros ça donnerait :
créer un fichier d:\oracle.txt
user;mdp@bdd
for /f "eol= token=1,2* delims=;" %%i in (d:\oracle.txt) do (sqlplus %%i/%%j @test.sql)
à tester j'ai fait ça rapide
Marsh Posté le 16-02-2010 à 10:31:39
Ok, c'est une solution.
Et en utilisant des variables au lieu d'un fichier tierce ?
Marsh Posté le 16-02-2010 à 10:40:22
je crois que les variables d'environnement sont persistantes uniquement si on les définit dans l'autoexec.bat
Marsh Posté le 16-02-2010 à 10:44:50
Ok, c'est ce que je craignais aussi...
Donc soit on passe par l'interface de Windows (Clic droit sur poste de travail puis propriétés - avancée et on crée nos variables) soit...c'est mort...
Arf, c'est bien dommage ce fonctionnement....
En tout cas, merci!
Marsh Posté le 16-02-2010 à 10:57:31
MonGhost a écrit : je crois que les variables d'environnement sont persistantes uniquement si on les définit dans l'autoexec.bat |
Non, tu peux changer ça sous windows avec setx.exe
C'est en standard a partir de Vista, et il faut installer un pack particulier pour Win 2K et XP. Voir la doc ici: http://ss64.com/nt/setx.html
Ou alors, tu peux utiliser setenv.exe, que tu trouveras ici: http://barnyard.syr.edu/~vefatica/#SETENV (c'est peut être un utilitaire un poil ancien, je ne sais pas ce qu'il donne sur des versions récentes de Windows)
A+,
Marsh Posté le 16-02-2010 à 11:08:23
interessant gilou
par contre Brandtance, par rapport à ta problèmatique de sécurité, je ne suis pas sur que de mettre des mots de passe en variable d'environnement soit top...
déjà que les batch sur ce point c'est pas idéal....
tant mieux si j'ai pu t'aider
bonne journée
Marsh Posté le 16-02-2010 à 08:28:18
Bonjour,
Je vous expose ma problématique :
Nous utilisons plusieurs batchs. Pour chaque batch nous avons une certaine quantité de variable que l'on aimerait passer en variable d'environnement. Actuellement, chaque script contient les mêmes paramètres...et le but serait de stocker cela dans un seul fichier...
D'ou ma question comment créer, via un batch, des variables d'envrionnement du type : ConnexionOracle, MdpDsi,...
D'avance merci,