Windows에서 단일 명령에 대한 환경 변수를 어떻게 설정합니까? [복제]


22

ENVVAR=abc commandUnix 와 같이 Windows에서 단일 명령에 대한 환경 변수를 설정하는 방법이 있습니까?

setWindows에서 명령으로 설정 한 변수 는 다음 명령에 남아있는 것처럼 보이지만 이것이 원하는 것은 아닙니다.


나는 당신이 그들 자신을 설정 해제해야한다고 생각합니다.
Zina

답변:


29

단일 명령에 환경 변수를 설정하는 방법이 있습니까?

현재 cmd쉘에서 :

변수를 직접 지워야합니다.

set ENVVAR=abc && dir & set ENVVAR=

배치 파일에서 :

setlocal및 을 사용할 수 있습니다 endlocal.

@echo off
setlocal 
  set ENVVAR=abc && dir
endlocal

자식 cmd셸을 사용하십시오 .

cmd /c자식 셸을 만드는 데 사용할 수 있습니다 .

변수는 자식 쉘에서 설정되며 부모 쉘에 영향을 미치지 않습니다 ( jpmc26 의 주석에서 지적한 바와 같이 ).

cmd /C "set ENVVAR=abc && dir"

추가 자료

  • Windows CMD 명령 행의 AZ 색인 -Windows cmd 행과 관련된 모든 것에 대한 훌륭한 참조 자료.
  • cmd- 새 CMD 셸을 시작하고 선택적으로 명령 / 실행 프로그램을 실행합니다.
  • endlocal- 배치 파일에서 환경 변경의 현지화를 종료합니다. 한 배치 파일에서 다른 배치 파일로 변수를 전달하십시오.
  • 리디렉션 -리디렉션 연산자.
  • set -CMD 환경 변수를 표시, 설정 또는 제거합니다. SET로 변경 한 내용은 현재 CMD 세션 동안 만 유지됩니다.
  • setlocal- 배치 파일에서 환경 변수의 가시성을 제어하는 ​​옵션을 설정합니다.

또 다른 옵션은 별도의 cmd프로세스 를 시작 하고 거기서 설정하는 것입니다. 예, cmd /C "set ENVVAR=abc && dir". 상위 프로세스에는 영향을 미치지 않으므로 종료시 효과적으로 "지워집니다".
jpmc26

@ jpmc26 좋습니다. 감사. 답변을 추가했습니다.
DavidPostill

첫 번째 방법은 명령이 실패하면 변수를 지우지 않습니다.
아무도

@AndrewMedico 감사합니다. 좋은 지적. 답변이 수정되었습니다.
DavidPostill
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.