批次:“是否”。该代码有什么问题?

时间:2018-07-12 17:50:38

标签: batch-file if-statement

我想要pasw和paswconfirm与它说的3不同吗?

但是我这就是我得到的:

Wachtwoord:test
Type het wachtwoord overnieuw:xzcv
1
3

这是我的代码:

:pasw
cls
:paswretry
set /p pasw=Wachtwoord:
set /p paswconfirm=Type het wachtwoord overnieuw:
if "%pasw%" == "%paswconfirm%" (
  echo Weet je het zeker? Het wachtwoord word: %pasw%
  CHOICE /c YN /n /m (Y/N)
  if "%errorlevel%" == "1" (
    echo 1
    )
  if "%errorlevel%" == "2" (
    echo 2
    )
) else (
  echo 3
  )

1 个答案:

答案 0 :(得分:1)

根据我的评论,您将过早地用If括起来将括号/N)括起来。

因此,您可以使用 ^) 插入符号来跳过该括号:

:paswretry
Set /P "pasw=Wachtwoord: "
Set /P "paswconfirm=Type het wachtwoord overnieuw: "
If "%pasw%"=="%paswconfirm%" (
    Echo Weet je het zeker? Het wachtwoord word: %pasw%
    Choice /C YN /N /M (Y/N^)
    If "%ErrorLevel%"=="1" (
        Echo 1
    ) Else (
        Echo 2
    )
)

或者您可以在用法信息(在命令提示符下输入Choice /?时输出)中将消息文本双引号,如示例所示:

:paswretry
Set /P "pasw=Wachtwoord: "
Set /P "paswconfirm=Type het wachtwoord overnieuw: "
If "%pasw%"=="%paswconfirm%" (
    Echo Weet je het zeker? Het wachtwoord word: %pasw%
    Choice /C YN /N /M "(Y/N)"
    If "%ErrorLevel%"=="1" (
        Echo 1
    ) Else (
        Echo 2
    )
)

但是Choice命令可以使用[Y,N]?自动运行,因此不需要其他选项。

您应该使用以下任一方法:

:paswretry
Set /P "pasw=Wachtwoord: "
Set /P "paswconfirm=Type het wachtwoord overnieuw: "
If "%pasw%"=="%paswconfirm%" (
    Echo Weet je het zeker? Het wachtwoord word: %pasw%
    Choice
    If ErrorLevel 2 (
        Echo 2
    ) Else (
        Echo 1
    )
)

这个,(更好)

:paswretry
Set /P "pasw=Wachtwoord: "
Set /P "paswconfirm=Type het wachtwoord overnieuw: "
If Not "%pasw%"=="%paswconfirm%" GoTo paswretry
Echo Weet je het zeker? Het wachtwoord word: %pasw%
Choice
If ErrorLevel 2 (
    Echo 2
) Else (
    Echo 1
)

或这个(甚至更好)

:paswretry
Set /P "pasw=Wachtwoord: "
Set /P "paswconfirm=Type het wachtwoord overnieuw: "
If Not "%pasw%"=="%paswconfirm%" GoTo paswretry
Echo Weet je het zeker? Het wachtwoord word: %pasw%
Choice
Echo %ErrorLevel%

在后两个示例中,我在行GoTo paswretry上使用了4;当然可以根据需要将其更改为GoTo SomethingElse(甚至:EOF也可以退出脚本块)