2011-09-16 4 views
0

문자열에서 하위 문자열을 가져 와서 "시스템"과 같은지 확인하려고합니다. %% a에서 문자열을 가져옵니다. 스크립트를 실행할 때 "예기치 않은 오류가 발생합니다."for 루프 ("set _varsub ...) 내부의 줄을 제거하면 오류가 사라집니다. 그래서 내 하위 문자열 명령에 구문 오류가 있다고 생각합니다. 사람이 말해?이 배치 스크립트의 구문 오류는 무엇입니까?

for /f "tokens=1,3,4,* delims=: " %%a in ('e:\DeployTools\handle.exe %deploymentdir%\%%i ^| findstr /i pid: ') do @(


     set _varsub=%%a 
     set _varsub=%_varsub:~0,6% 
     if not %_varsubstring%==System (

     // do something 
    ) 

답변

1

시도는 if 문에서 변수 따옴표를 넣어,

하지 '%의 _varsubstring의 %'== '시스템'(...

가 예기치 않은 오류가있는 경우 그 시점에서 _varsubstring이 정의되지 않았기 때문에 라인은 다음과 같이 평가됩니다.

그렇지 않은 경우 == System (

1

thescottknight가 썼듯이 변수가 정의되지 않았기 때문에 코드가 실패합니다.
하지만 대괄호 안의 확장은 percentd에서 작동하지 않으므로 실패합니다.
귀하의 경우 지연된 확장을 느낌표와 함께 사용해야합니다.

set _varsub=%%a 
set _varsub=!_varsub:~0,6! 
관련 문제