foo.bat
두 개의 배치 파일 및 bar.bat
가 다음과 같이 위치한다고 가정해 보겠습니다 .
root\foo.bat
root\grub\bar.bat
또한 두 파일 모두에 다음과 같이 변수를 설정하는 줄이 포함되어 있다고 가정해 보겠습니다.
set PWD=%cd%
이제 foo.bat
호출 하면 ? 에 설정된 변수 가 재정의 .\grub\bar.bat
됩니다 .bar.bat
PWD
foo.bat
답변1
실험을 진행했습니다. 에서 환경 변수를 변경하면 bar.bat
에서도 변경됩니다 foo.bat
. set
명령( 아님 setx
)을 사용하여 설정된 환경 변수의 범위가 명령 세션으로 지정되기 때문에 이것이 예상된 것이라고 가정합니다 .
답변2
범위는 전역이고 변수는 말씀하신 대로 공유됩니다.
또한 setx를 사용하면 레지스트리에 있으므로 다음 cmd 세션과 향후 세션에서 작동하지만 범위 논의에서 set과 setx를 비교할 수 없습니다. 환경 변수는 일반적으로 전역 변수입니다. 그러나 시작 시 배치 파일에서 setlocal을 사용할 수 있으며 거기에 설정된 변수는 로컬로 유지됩니다.
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>