2012-12-05 94 views
1

好吧,我得到了這個基本的IF語句。我想根據用戶名設置一個用戶角色。它確實看起來像是,set語句永遠不會被執行,因此我得到了一個空的回聲。在IF語句(批處理)中設置變量?

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

echo %role% 

我錯過了什麼,或者可能是Windows只是不支持?

回答

1

刪除空格。您現在正在爲環境變量role設置一個值(具有Stack Overflow不會顯示的尾部空間)。此外,該角色將變爲"admin"(包括引號和前導空格,即再次在此處不可見)。

您可以通過在命令行中不帶參數運行set來驗證此情況。它會給你一個所有變量的列表,你可以清楚地看到不需要的空間。

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

echo %role% 

你仍然需要報價與if語句的唯一原因,是該語句將成爲無效的,如果%username%不存在/是空的。在這種情況下,該行將變成:

if == admin (

...這當然是無效的。它甚至不需要被引用,你也可以這樣寫:

if %username%XYZ == adminXYZ (
+0

哈哈不知道會那麼簡單。謝謝! :) –