Nombres de variables entre archivos por lotes llamados

Nombres de variables entre archivos por lotes llamados

Digamos que tengo dos archivos por lotes foo.baty bar.batque 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.batllama .\grub\bar.bat, ¿ bar.batanulará la PWDvariable establecida en foo.bat?

Respuesta1

Hice un experimento. Cambiar la variable de entorno en bar.bathace que cambie en foo.bat. Supongo que esto era de esperarse porque las variables de entorno configuradas mediante el setcomando (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>

información relacionada