2011-03-21 3 views
2

좋아, 그럼 여기서 무슨 일이 일어나고 있는지 잘 모르겠다. 나는 눈의 두 번째 세트가 분명해질 것으로 기대하고있다. 나는 거짓이어야하며 필터가 설정되어있는 경우예기치 않은 결과/이상한 논리를 제공하면 배치 파일

if \%3\==\\ (set filter=FullExclude.txt) else (set filter=%3) 
if %filter%==%3 (set output = CustomDiffData) else (set output = USERDATA) 
echo %output% 

매개 변수 3

그래서 처음 custom.txt에 입력되고 ... IF 문을 수행하고 상관없이 동일한 결과를 얻기없는거야 custom.txt에 이것은 반향으로 확인됩니다. 경우

다음은 진실해야하기 때문에 custom.txt = custom.txt ...이 일이 이상한 얻을 어디 내가이 할 경우 출력 에코 백 USERDATA 도 괴상 이유는

if %filter%==%3 (set output = USERDATA) else (set output = CustomDiffData) 
echo %output% 

나는 아직도 USERDATA를 얻을 수를 에코 백.

이유가 무엇인가요?

이것은 내 스크립트 맨 끝에서 두 개의 null 매개 변수 검사 만 종료 스크립트입니다.

답변

2

주된 문제는 set output =...output<space>이 아닌 변수를 사용하는 것입니다. output이 아닙니다.

배치 파일에서 (불필요한) 공백을 피해야합니다.

% 3에 공백이나 특수 문자가 포함될 수 있으므로 다른 오류가 일괄 처리 오류와 함께 실패하므로 if \%3\==\\ 줄에 다른 오류가있을 수 있습니다.
그것은 처럼 따옴표를 사용하는 것이 좋습니다 경우 "% ~ 3"== ""(설정 필터 = FullExclude.txt) 다른 (세트 "필터 = % ~ 3")

그리고 당신은 할 수 비교할 두 번째 피하기 위해 코드를

+0

으로 변경하십시오. 감사합니다. 공백 이었기 때문에 ~도 특수 문자를 처리해야합니다. 감사합니다. – MilqueToasted

+0

@MilqueToasted :'~'는 % 3의 주변 인용 부호를 제거하기 위해서만, IF 문에 따옴표를 한 쌍만 얻습니다 – jeb