호출된 배치 파일 간의 변수 이름

호출된 배치 파일 간의 변수 이름

foo.bat두 개의 배치 파일 및 bar.bat가 다음과 같이 위치한다고 가정해 보겠습니다 .

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

또한 두 파일 모두에 다음과 같이 변수를 설정하는 줄이 포함되어 있다고 가정해 보겠습니다.

set PWD=%cd%

이제 foo.bat호출 하면 ? 에 설정된 변수 가 재정의 .\grub\bar.bat됩니다 .bar.batPWDfoo.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>

관련 정보