好的,我得到了这个基本的 IF 语句。我想根据用户名设置用户角色。不过看起来确实 set 语句永远不会被执行,因此我得到了一个空的回声。
if "%username%" == "admin" (
set role = "admin"
) else (
set role = "user"
)
echo %role%
我错过了什么,或者可能是 Windows 不支持它?
好的,我得到了这个基本的 IF 语句。我想根据用户名设置用户角色。不过看起来确实 set 语句永远不会被执行,因此我得到了一个空的回声。
if "%username%" == "admin" (
set role = "admin"
) else (
set role = "user"
)
echo %role%
我错过了什么,或者可能是 Windows 不支持它?
删除空格。您现在正在为环境变量设置一个值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 (