[Batch] Lire une variable d'environnement en batch

Lire une variable d'environnement en batch [Batch] - Shell/Batch - Programmation

Marsh Posté le 02-01-2007 à 15:43:29    

Bonne année !!
 
 
Mon problème :
 
En Perl, j'écris dans des variables d'environnement avec $ENV{''} mais je n'arrive pas à lire les valeurs en batch.
 
 
Un exemple avec un batch "appel.bat"  et un programme Perl "pgm.pl" :
 
Dans "appel.bat" :

Code :
  1. SET MAVAR=AAA
  2.   C:\Perl\bin\perl.exe "C:\pgm.pl"
  3.   ECHO %MAVAR%


 
Dans "pgm.pl" :

Code :
  1. print $ENV{'MAVAR'};   # Affiche "AAA"
  2.   $ENV{'MAVAR'} = "BBB";
  3.   print $ENV{'MAVAR'};   # Affiche "BBB"


   
La variable MAVAR est bien lue et bien modifiée dans "pgm.pl"
Mais dans le batch "appel.bat", le ECHO en ligne 3 affiche toujours "AAA"   pourtant la valeur a bien été modifiée dans le pgm.pl
 
 
 

Reply

Marsh Posté le 02-01-2007 à 15:43:29   

Reply

Marsh Posté le 03-01-2007 à 14:11:40    

Est ce que tu es sûr que l'environnement de Perl (le $ENV) c'est le même que l'environnement du command prompt ?

Reply

Marsh Posté le 03-01-2007 à 17:36:54    

J'avais compris que les variables d'environnement sont communes à toute la machine, quelquesoit le langage.
C'est comme çà qu'on peut, par exemple, savoir où se trouvent les fichiers systèmes Windows : %SystemRoot%
 
En tout cas, j'arrive à récupérer n'importe quelle variable d'env. dans le programme Perl.

Reply

Marsh Posté le 03-01-2007 à 19:24:04    

Ta variable n'est modifiée que localement, i.e. dans l'environement de l'interpréteur Perl.
 
Elle n'est pas modifiée dans celui du shell Windows.
 
C'est la même chose que si on remplaçait :
C:\Perl\bin\perl.exe "C:\pgm.pl"
par
call pgm.bat
 
dont le contenu de pgm.bat est :
setlocal
echo %VAR%
set VAR=NOUVELLE_VALEUR
echo %VAR%
endlocal

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed