另外一个更加简单的两行代码实现方式,不需要使用if语句,如下所示:
两行代码如下:
choice /c yn /n /m "DO YOU WANT YOUR COMPUTER TO SHUTDOWN? (y/n)"
goto %ERRORLEVEL%
完整代码(包括2行编辑):
@echo off
echo ---WARNING---
echo.
choice /c yn /n /m "DO YOU WANT YOUR COMPUTER TO SHUTDOWN? (y/n)"
goto %ERRORLEVEL%
:1
shutdown /s
:2
pause
内置命令的解释:
此工具允许用户从一系列选项中选择一个项目,并返回所选选项的索引。 /c yn
指定了用户可以选择的选项。 /n
隐藏了默认提示信息。 /m
给用户提供了自定义消息,定义在 " "
中。需要第二行的是 goto %ERRORLEVEL%
,它将代码发送到代码中所需的:
。 %ERRORLEVEL%
(此解释仅适用于choice命令。 %ERRORLEVEL%
可以以多种其他方式使用。)返回1到x之间的数字,其中x是可选项的总数。在此示例中,当按下 y
时,将返回1,当按下 n
时,将返回2。
编辑:
你有点正确,但你只是使用了错误的命令。您可以实现我的修复的另一种方法如下:
@echo off
echo ---WARNING---
echo.
choice /c yn /n /m "DO YOU WANT YOUR COMPUTER TO SHUTDOWN? (y/n)"
set INPUT=%ERRORLEVEL%
if %INPUT% EQU 1 goto yes
if %INPUT% EQU 2 goto no
:yes
shutdown /s
:no
pause
对于
if
命令,你需要使用C++语法表示等于。在批处理中,你需要使用
EQU
表示等于,
NEQ
表示不等于,
LSS
表示小于,
LEQ
表示小于等于,
GTR
表示大于,
GEQ
表示大于等于。如果你需要更深入的了解,请在打开命令提示符时输入
if /?
。它包含了非常丰富的信息。
此外,这也可以消除任何用户错误,也就是说,无论用户如何尝试破坏或错误使用它,都可以避免。
~Burn
set
不支持/p
开关。 - Stephan