배치 파일에서 변수를 선언하고 사용하려고합니다. 그것은 단순해야하는 것처럼 보입니다.Windows 배치 파일 (.BAT)에서 변수 선언 및 사용
@ECHO OFF
SET location = "bob"
ECHO We're working with "%location%"
내가 얻을 출력은 다음과 같습니다
We're working with ""
여기 무슨 일이야? 변수가 echo되지 않는 이유는 무엇입니까?
배치 파일에서 변수를 선언하고 사용하려고합니다. 그것은 단순해야하는 것처럼 보입니다.Windows 배치 파일 (.BAT)에서 변수 선언 및 사용
@ECHO OFF
SET location = "bob"
ECHO We're working with "%location%"
내가 얻을 출력은 다음과 같습니다
We're working with ""
여기 무슨 일이야? 변수가 echo되지 않는 이유는 무엇입니까?
=
앞에있는 공백은 이름의 일부로 해석되며 그 뒤에 공백이 값의 일부로 해석됩니다. 따라서 생성 한 변수는 %location %
으로 참조 할 수 있습니다. 그것이 원하는 것이 아니라면 정의에서 여분의 공간을 제거하십시오.
공백이 중요합니다. 값이 ' "bob"'
인 'location '
이라는 변수를 만들었습니다. 당신이 당신의 가치에 따옴표, 다음 코드는 당신이 따옴표를하지 않으려면, 다음 코드는 아직
set location=bob
또는 더 나은
과 같아야합니다set location="bob"
과 같아야합니다
set "location=bob"
마지막 구문을 사용하면 부주의 한 공백이 값에서 벗어나는 것을 방지 할 수 있으며, t 특수 문자 (예 : &) | 등
마지막 구문의 단점이 있습니까? – Wolf
@Wolf - 아니요, 단점은 없습니다. 그러나 가장 효과적인시기에는 제한이 있습니다. 값에 따옴표가 포함되어 있지 않으면 이스케이프 걱정없이 값에 거의 모든 문자가 나타날 수 있습니다. 지연 확장이 사용 가능하다면 예외는'%'이고 가능하다면'!'입니다. 그러나 값에 따옴표가 포함되어 있으면'|','&'등의 독점 문자를 벗어날 때 걱정해야합니다. – dbenham
이것은 Windows에서 환경 변수를 설정하는 것과 같습니다. 이것은 배치 스크립트에서 로컬 변수를 사용하는 유일한 방법입니까? – parasrish
입력 location.bat
@echo off
cls
set /p "location"="bob"
echo We're working with %location%
pause
We're working with bob
는 (실수 U 완료 : space
및 " "
) 출력
감사 브라이언. 문제 해결됨. –
'='앞의 공백이 이름의 일부로 해석된다면 변수 *는'% location %'로 참조 될 수 없으며'% location %'로 참조되어야합니다. 그건 오타예요? –
@Miserable Variable : 당신 말이 맞아요. 원래의 답변이 잘못된 편집에 희생 된 것 같습니다. –