Question Noms de variables entre fichiers de lots appelés


Disons que j'ai deux fichiers de commandes, foo.bat et bar.bat, qui sont situés comme ça:

root\foo.bat
root\grub\bar.bat

Disons aussi que les deux fichiers contiennent une ligne qui définit une variable, comme ceci:

set PWD=%cd%

Maintenant si foo.bat appels .\grub\bar.bat, volonté bar.bat remplacer le PWD variable définie dans foo.bat?


2
2018-02-03 16:48


origine




Réponses:


J'ai couru une expérience. Changer la variable d'environnement dans bar.bat le fait changer de foo.bat. Je suppose que cela était à prévoir car les variables d'environnement définies en utilisant le set commande (pas setx) sont à la session de commande.


1
2018-02-03 17:16



microsoft.com/resources/documentation/windows/xp/all/proddocs/… - Psycogeek


la portée est globale / variable est partagée comme vous le dites..pour vous faire écho, oui.

de plus, si vous utilisez setx, cela fonctionnera pour la prochaine session de cmd et pour les futures, car elle est dans le registre, mais set et setx ne doivent pas être comparés dans la discussion de la portée. Les variables d'environnement sont généralement globales. Mais vous pouvez utiliser setlocal dans un fichier batch au début et les variables qui y sont définies restent locales

C:\DOCUME~1\bob>type n.bat <ENTER>
setlocal
set a=99

C:\DOCUME~1\bob>echo %a% <ENTER>
%a%

C:\DOCUME~1\bob>n <ENTER>

C:\DOCUME~1\bob>setlocal

C:\DOCUME~1\bob>set a=99

C:\DOCUME~1\bob>echo %a% <ENTER>
%a%

C:\DOCUME~1\bob>

1
2018-02-03 22:54