1

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

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

echo %role%

我错过了什么,或者可能是 Windows 不支持它?

4

1 回答 1

1

删除空格。您现在正在为环境变量设置一个值role(带有 Stack Overflow 不会显示的尾随空格)。此外,角色变为"admin"(包括引号和前导空格,也就是说,这里再次不可见)。

set您可以通过从命令行不带参数运行来验证这一点。它将为您提供所有变量的列表,您可以在其中清楚地看到不需要的空间。

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

echo %role%

%username%您仍然需要在 if 语句中使用引号的唯一原因是,如果该语句不存在/为空,则该语句将变为无效。在这种情况下,该行将变为:

if == admin (

...这当然是无效的。它甚至不需要引号,你也可以写:

if %username%XYZ == adminXYZ (
于 2012-12-05T09:56:51.557 回答