如果序列返回错误,批处理文件很复

时间:2013-04-13 18:15:16

标签: if-statement batch-file cmd

我正在尝试让用户登录,当他们这样做时,设置他们的权力或等级。排名是管理员用户和访客。我需要为程序中的每个命令执行以下代码。它返回)此时并未预料到。知道为什么吗?对于此命令,所有用户都应该能够访问它,但稍后我将需要为每个组设置某些内容。

if %inputCommand%==/help (
  if %power%==Admin (
goto helpInfo
  ) else (
    if %power%==User (
  goto helpInfo
) else (
  if %power%==Guest (

      ) else (
        goto powerReadFailed
      )
    )
  )
) else (
goto readInputCommandTwo
    )

2 个答案:

答案 0 :(得分:1)

试试这个:

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
    )

答案 1 :(得分:0)

为什么这么复杂?

怎么样

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

并添加新的用户类或命令并不难......

(IF /i表示进行不区分大小写的比较)