CMD 셸에서 다음을 실행한다고 가정 해 보겠습니다.
set FOO=bar
CMD 셸을 재활용하는 것 외에이 변수를 정의 해제하는 방법이 있습니까?
CMD 셸에서 다음을 실행한다고 가정 해 보겠습니다.
set FOO=bar
CMD 셸을 재활용하는 것 외에이 변수를 정의 해제하는 방법이 있습니까?
set var=
대답은 Windows cmd.exe에서와 마찬가지로 MS-DOS 6.22 command.com에서도 작동합니다. (단, 윈도우와는 달리 VAR 주위에 따옴표를 넣어 =하지 않습니다 작품은 대신 그의 이름 따옴표로 시작하는 환경 변수를 작성합니다.)
답변:
이것은 Windows 7 CMD 셸에서 나를 위해 작동합니다.
set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it
set
명령 에서 공백은 중요합니다 . 시도 set FOO = bar
하고 시도 set FOO=
하면 'FOO'설정이 해제되지 않습니다. 그러나 어떤 이유로 내부에서 중요하지 않습니다 % %
.
나는 다음 사항을 코멘트로만 제공 할 것이지만, 그 자체만으로도 충분히 중요하다고 생각합니다.
많은 이전 답변에서 후행 공백을 조심해야한다고 언급했습니다. 그리고 그것은 사실입니다. 그러나 나는 때때로 후행 공백이 무엇이든 상관없이 거기에 들어가기를 원한다는 것을 발견했습니다. 특히 명령 줄 한 줄을 수행하고 명령 구분 기호로 공백이 필요한 경우.
이것이 그 문제에 대한 해결책입니다.
SET FOO=Bar
echo %FOO%
:: outputs Bar
SET "FOO="
echo %FOO%
:: outputs %FOO%
그런 식으로 선언을 큰 따옴표로 묶으면 공백 문제를 완전히 피할 수 있습니다. 이것은 또한 변수가 연결을 통해 생성 될 때 매우 유용 할 수 있습니다. 예를 들어 경로 사이의 공백을 제거합니다.
SET A=c:\users\ && SET D=Daniel
SET P="%a%%d%"
ECHO %P%
:: outputs "C:\Users\ Daniel"
:: Notice the undesirable space there
cmd.exe
)을 의미 합니까 ?