2012-12-05 2 views
1

좋아,이 기본 IF 문이있다. 사용자 이름을 기반으로 사용자 역할을 설정하려고합니다. 그래도 set 문이 실행되지 않으므로 빈 에코가 표시되는 것처럼 보입니다.IF- 문 (배치)의 변수 설정?

if "%username%" == "admin" (
    set role = "admin" 
) else (
    set role = "user" 
) 

echo %role% 

나는 뭔가를 놓쳤습니까? 아니면 Windows가이를 지원하지 않을 수 있습니까?

답변

1

공백을 제거하십시오. 이제 환경 변수 role에 값을 설정하고 있습니다 (스택 오버 플로우가 표시되지 않는 마지막 공간이 있음). 또한 역할은 "admin" (따옴표 및 선행 공백을 포함하여 다시 여기서는 볼 수 없음)이됩니다.

명령 줄에서 매개 변수없이 set을 실행하여이를 확인할 수 있습니다. 원하지 않는 공백을 명확하게 볼 수있는 모든 변수 목록을 제공합니다.

if "%username%" == "admin" (
    set role=admin 
) else (
    set role=user 
) 

echo %role% 

여전히 if 문에 따옴표를 필요로하는 유일한 이유는, 문이 %username%이 존재하지 않은 경우/무효가 비어있는 것입니다. 이 경우 라인은 다음과 같이됩니다.

if == admin (

... 물론 잘못된 것입니다. 따옴표로 묶을 필요가 없어도 다음과 같이 쓸 수 있습니다.

if %username%XYZ == adminXYZ (
+0

hah는 쉽지 않을 것입니다. 고마워! :) –