Programing

MS-DOS 변수를 정의 해제하는 방법은 무엇입니까?

lottogame 2020. 10. 12. 07:03
반응형

MS-DOS 변수를 정의 해제하는 방법은 무엇입니까?


CMD 셸에서 다음을 실행한다고 가정 해 보겠습니다.

set FOO=bar

CMD 셸을 재활용하는 것 외에이 변수를 정의 해제하는 방법이 있습니까?


예, 다음으로 설정을 해제 할 수 있습니다.

set FOO=

또는 명시 적으로 다음을 사용합니다.

set "FOO="

=기호 뒤에 후행 외부 (보이지 않는) 문자가 나오지 않도록 하십시오. 그건:

  • set FOO=과 다릅니다 set FOO=      .

변수 설정을 해제하는 안전한 방법은 따옴표도 사용하는 것입니다. 그러면 후행 공백에 문제가 없습니다.

set FOO=bar
echo %FOO%
set "FOO=" text after the last quote is ignored
echo %FOO%

다른 방법

@Echo oFF

setlocal
set FOO=bar
echo %FOO%
endlocal

echo %FOO%

pause

참고 : 대화 형 명령 프롬프트에서는 작동하지 않습니다. 그러나 배치 스크립트에서 작동합니다.


이것은 Windows 7 CMD 셸에서 나를 위해 작동합니다.

set FOO=bar
echo %FOO% // bar
set FOO=
echo %FOO% // empty; calling "set" no longer lists it

다음은 코멘트로만 드리고 싶지만 그 자체만으로도 충분히 중요하다고 생각합니다.

많은 이전 답변에서 후행 공백을주의해야한다고 언급했습니다. 그리고 그것은 사실입니다. 그러나 나는 때때로 후행 공백이 무엇이든 상관없이 거기에 들어가기를 원한다는 것을 발견했습니다. 특히 명령 줄 한 줄을 수행하고 명령 구분 기호로 공백이 필요한 경우.

이것이 그 문제에 대한 해결책입니다.

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

참고 URL : https://stackoverflow.com/questions/7219672/how-to-undefine-an-ms-dos-variable

반응형