Digamos que tengo dos archivos por lotes foo.bat
y bar.bat
que están ubicados así:
root\foo.bat
root\grub\bar.bat
Digamos también que ambos archivos contienen una línea que establece una variable, así:
set PWD=%cd%
Ahora, si foo.bat
llama .\grub\bar.bat
, ¿ bar.bat
anulará la PWD
variable establecida en foo.bat
?
Respuesta1
Hice un experimento. Cambiar la variable de entorno en bar.bat
hace que cambie en foo.bat
. Supongo que esto era de esperarse porque las variables de entorno configuradas mediante el set
comando (not setx
) tienen como ámbito la sesión de comando.
Respuesta2
el alcance es global/la variable se comparte como usted dice ... así que, para hacerle eco, sí.
Además, si usa setx, funcionará para la siguiente sesión de cmd y las futuras porque está en el registro, pero set y setx no deben compararse en la discusión sobre el alcance. Las variables de entorno son generalmente globales. Pero puede usar setlocal en un archivo por lotes al inicio y las variables establecidas allí permanecen 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>