If statement 如果序列返回错误,批处理文件将变得复杂。
我试图让用户登录,当他们这样做时,设置他们的权力或排名。级别为管理员用户和来宾。我需要为程序中的每个命令执行下面的代码。它(返回)在此时不是预期的。知道为什么吗?对于该命令,所有用户都应该能够访问它,但稍后我需要为每个组设置某些内容If statement 如果序列返回错误,批处理文件将变得复杂。,if-statement,batch-file,cmd,If Statement,Batch File,Cmd,我试图让用户登录,当他们这样做时,设置他们的权力或排名。级别为管理员用户和来宾。我需要为程序中的每个命令执行下面的代码。它(返回)在此时不是预期的。知道为什么吗?对于该命令,所有用户都应该能够访问它,但稍后我需要为每个组设置某些内容 if %inputCommand%==/help ( if %power%==Admin ( goto helpInfo ) else ( if %power%==User ( goto helpInfo ) else ( if %power
if %inputCommand%==/help (
if %power%==Admin (
goto helpInfo
) else (
if %power%==User (
goto helpInfo
) else (
if %power%==Guest (
) else (
goto powerReadFailed
)
)
)
) else (
goto readInputCommandTwo
)
试试这个:
if "%inputCommand%"=="/help" (
if "%power%"=="Admin" (
goto helpInfo
) else (
if "%power%"=="User" (
goto helpInfo
) else (
if "%power%"=="Guest" (
rem
) else (
goto powerReadFailed
)
)
)
) else (
goto readInputCommandTwo
)
为什么这么复杂
怎么样
for %%a in (admin user guest) do if /i "%power"=="%%a" (
for %%b in (help somethingelse whatever) do if /i "%inputcommand"=="%%b" (
goto %%a%%b
)
goto %%ainvalidcommand
)
:powerreadfailed
然后可以设置标签
adminhelp userhelp guesthelp
adminsomethingelse usersomethingelse guetsomethingelse
...
写作是完全正当的
:adminhelp
:userhelp
echo admin and user get the same help
添加一个新的用户类或命令并不难
(如果/i
表示进行不区分大小写的比较)其他“空”命令(例如键入nul
)也可以工作。不过,通过反转条件(如果不是“%power%”==“Guest”
)来消除对空分支的需求将是一个更好的方法。是的,我知道:-),但我不知道OP想用他的else
代码做什么。所以我只让它运行。