의 컨텍스트가 if
동일한 코드를 실행하는 능력을 변경 하는 이유를 알 수 없습니다 .
이 동안 :
@SET FILE_MAIL_BODY=mail.body
@echo The build FAILED because of a lock on the 'classes' folder (or its subfolders).>%FILE_MAIL_BODY%
다음 스 니펫을 실행하면 잘 작동합니다.
@SET retval=%ERRORLEVEL%
if %retval% == 1 (
@SET FILE_MAIL_BODY=mail.body
@echo The build FAILED because of a lock on the 'classes' folder (or its subfolders).>%FILE_MAIL_BODY%
)
다음 메시지와 함께 실패합니다.
. was unexpected at this time.
, I는 삭제하지 않는 한 .
후를 subfolders
.
캐럿 문자 (아래 참조) ()
를 사용하여 ECHO
명령 에서 여는 괄호 문자 를 이스케이프해야 ^
하므로 다음과 같습니다 @echo The build FAILED because of a lock on the 'classes' folder ^(or its subfolders^).>%FILE_MAIL_BODY%
..
@SET retval=%ERRORLEVEL%
if %retval% == 1 (
@SET FILE_MAIL_BODY=mail.body
@echo The build FAILED because of a lock on the 'classes' folder ^(or its subfolders^)^.>%FILE_MAIL_BODY%
)
Windows 배치 파일에서 반향 괄호
실제로 괄호에 관한 것이 아닙니다. 스크립트 엔진이 명령을 실행하기 전에 무자비하게 해석하는 거의 모든 것입니다 . 변수 마커 (퍼센트 기호), 리디렉션 기호, 괄호, 큰 따옴표, 앰퍼샌드…
내 가장 일반적인 ... 예를 들어, 이것은 다음과 같습니다.
@echo off echo Doing something (very important)...
이것을 BATch 파일에 넣고 실행하면 다음과 같은 메시지가 표시됩니다.
... was unexpected at this time.
아니, 정말? 엔진이 에코 내에서 표현식을 평가하려고하는 것은 훌륭하지만 이번에는 훨씬 더 간단한 것이 필요합니다. 문자 메시지에 둥근 대괄호가 포함되어 있습니다. 그냥. 부디.
감사합니다.“치료법”이 있습니다. 캐럿 문자로 괄호를 이스케이프 할 수 있습니다.
@echo off echo Doing something ^(very important^)...
이제 우리는 좋습니다.
Doing something (very important)...
캐럿은 거의 모든 특수 문자, 심지어 개행 문자를 이스케이프하여 단일 명령을 여러 줄로 나누는 데 사용할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다