2012-12-05 80 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

哈哈不知道会那么简单。谢谢! :) –