在IF语句中设置变量(批处理)?

时间:2012-12-05 09:44:10

标签: if-statement batch-file set

好的,我得到了这个基本的IF声明。我想根据用户名设置用户角色。看起来确实如此,set语句永远不会被执行,因此我得到一个空的回声。

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

echo %role%

我是否遗漏了某些内容,或者可能是因为Windows不支持?

1 个答案:

答案 0 :(得分: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 (