如何获得用户输入 - 批量?

时间:2014-03-07 10:21:46

标签: batch-file

所以我想编写一个可选的代码,用户可以输入y或n,关闭。这就是我一直在尝试的:

    @echo off
    echo                                      ---WARNING---
    echo.
    echo DO YOU WANT YOUR COMPUTER TO SHUTDOWN? (y/n)
    If /I "%Input%"=="y" goto yes
    If /I "%Input%"=="n" goto no
    :yes
    shutdown /s
    :no
    pause

我是否沿着正确的轨道走?

4 个答案:

答案 0 :(得分:3)

尝试添加此功能。我还添加了一个goto,因为如果你输入的东西不是“是”,那么它会自动变为“是”。

set /p Input=Enter Yes or No:

如果没有以下代码,您可以添加此代码,但底部的代码应该有效。

set /P INPUT=Type input: %=%
If %INPUT%=="y" goto yes 
If %INPUT%=="n" goto no

您的代码应该是这样的:

@echo off
echo                                      ---WARNING---
echo.
echo DO YOU WANT YOUR COMPUTER TO SHUTDOWN? (y/n)
set /p Input=Enter Yes or No:
If /I "%Input%"=="y" goto yes
goto no
:yes
shutdown /s
:no
pause

答案 1 :(得分:2)

另外很多更简单的方法在两行中完成此操作,而不使用IF语句是这样的:

2 LINE EDIT:

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%(此解释仅适用于选择命令。%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命令,您具有equals的C ++语法。在批处理中,您使用EQU表示等号,NEQ表示不相等,LSS表示小于,LEQ表示小于等于,GTR表示更大比,和GEQ大于或等于。有关更深入的信息,您可能希望在下次打开命令提示符时执行if /?。它充满了太多的信息。

这也会删除任何id10t用户错误,这意味着用户可以尝试破解它或使用错误。

〜刻录

答案 2 :(得分:1)

以下是我的表现:

@echo off
setlocal

:again
set /p ans=Do you want to do something? (y/n) 
if /i "%ans:~0,1%" EQU "Y" (
  Echo you selected Yes.
  REM do yes stuff
) ELSE (if /i "%ans:~0,1%" EQU "N" (
     Echo you selected No. 
     REM Do no stuff 
     ) ELSE (
     Echo You need to select yes or no only.
     goto :again
     )
)

这样一来,如果他们没有输入是或否,你会发现他们是否输入了是或否的任何变体。

答案 3 :(得分:0)

足以完成任务,它会像输入一样提示用户

set DAYNUM={user value} 

在命令提示符处。

例如

set /p DAYNUM=Enter DAYNUM:

没有比这更简单的了,只有一个命令标志而不是四个,它不依赖于命令扩展,而且几乎没有版本兼容性问题。

就验证而言,好吧,用户必须输入正确的参数。 如果他们不这样做,那就错了。就那么简单。 回声确认并暂停,用户可以控制 - 打破它。

是否可以花更多时间争论不同方法的利弊?当然。 这是明智的吗?可能不是。高效的?当然不是。评论现有答案是否需要 50 分,而发布新答案根本不需要分数?当然。