2017-05-12 2 views
0

작은 일괄 처리 스크립트가있어서 왜 이런 식으로 작동하는지 궁금합니다. 스 니펫은 for 루프를 보여 주며 Rf-Stick1.conf를 찾고 문자열 "type"을 찾습니다. 더 나아가 "TYPE"에 다음 값을 써야합니다.for 루프에서 변수를 읽는 일괄 파일

"echo! TYPE!"을 사용할 때 작동하지만 if 문이 작동하지 않습니다. 누군가 문제를 알고 있습니까? 당신은 유효 조건이 당신이 원하는 수 있도록 귀하의 경우 조건을 변경해야 if not TYPE!

for /f "tokens=2 delims=: " %%a in ('type "Configs\Rf-Stick1.conf" ^| findstr /ir "^type" 2^>nul') DO set "TYPE=%%a"   

echo !TYPE! 
if !TYPE! EQU "RF" echo rf 
+0

이 (http://stackoverflow.com/a/43935679/2096401) 당신이 필요 아마로 시도, 또한 '에코 ::! TYPE 같은 것을 사용! ::'때마다 값을 디버깅하여 문제의 원인이 될 수있는 선행/후행 공백 등이 있는지 확인할 수 있습니다. – TripeHound

+0

'if' 문은 말 그대로 인용 부호를 취해 비교에 포함합니다; 따라서 비교 연산자의 양쪽에 제공해야합니다 :'if "! TYPE!" EQU "RF"echo rf' – aschipfl

답변

2

변수 TYPE이 값 RF,

if !TYPE! EQU "RF" echo rf 

구문 분석 및

if RF EQU "RF" echo rf 

당신이 볼 수 있듯이, 당신은 문자열에 대한 따옴표없이 문자열을 비교하는로 변환 한 다음 명령이 포함 된 경우 따옴표와 함께, 그래서 그들은 일치하지 않습니다.

MCND의 [답] @
if "!TYPE!" EQU "RF" echo rf 
+0

감사합니다. 그게 문제를 해결 했어! – xy36

0

아마 if !TYPE!는 해석되기 때문이다.

+0

음, 음,하지만 보통 % TYPE %를 대신 사용하면 작동하지 않습니다. 어떠한 제안? – xy36

+0

'echo % TYPE % '의 출력은 무엇입니까 – sziraqui

관련 문제