网站和脚本的新手。我知道您可以像这样创建用户输入:
set input=
set /p input=[y/n]: %=%
Run Code Online (Sandbox Code Playgroud)
那么您可以使用“如果”来询问它们是否是某些响应。例子:
if "%input%"=="y" goto a:
Run Code Online (Sandbox Code Playgroud)
并检查它是否不是说输入
if "%input%" NEQ "y" goto b:
Run Code Online (Sandbox Code Playgroud)
因为我没有受过教育,所以我不知道如何做到这一点,但我希望能够确定输入是否是 Enter 键击。我试图通过使用来实现这一点
if "%input%"==[ENTER] goto a:
Run Code Online (Sandbox Code Playgroud)
和
if "%input%"==enter
Run Code Online (Sandbox Code Playgroud)
以及我能想到的每一种方法来确定击键是否是 [ENTER]。我可能只是愚蠢,但有没有办法做到这一点?谢谢。
至少有两种方法可以做到这一点:检查值或检查操作
set /p检索键入的输入并将其存储在变量中,但是当没有输入时,只需Enter按一下,变量就没有存储操作,因此它保留其先前的值。
测试值的常用方法是清除变量内容,使用set /p和 测试变量是否已定义,即是否有内容
set "var="
set /p "var=[y/n]?"
if not defined var goto :noUserInput
Run Code Online (Sandbox Code Playgroud)
我们还可以测试操作本身。在批处理文件中,大多数命令设置为某个值的内部errorlevel变量,指示命令执行的成功或失败。
在这种情况下,如果已检索到数据set /p,它将设置errorlevel为 0,如果没有输入,则将其设置为 1。然后if errorlevel可以使用该构造来确定是否有输入
set /p "var=[y/n]?"
if errorlevel 1 goto :noUserInput
Run Code Online (Sandbox Code Playgroud)
正如 Aacini 所指出的,这可能会失败。如果批处理文件具有.bat扩展名 aset /p读取数据不会重置(设置为 0)先前的errorlevel值,因此需要先执行一些命令将其设置errorlevel为 0。
ver > nul
set /p "var=[y/n]?"
if errorlevel 1 goto :noUserInput
Run Code Online (Sandbox Code Playgroud)
如果批处理文件以.cmd扩展名保存,则不需要。在这种情况下,set /p它将errorlevel在读取数据时将 设置为 0。
也可以使用条件执行运算符(&&和||)。&&如果前一个命令成功,则执行下一个命令。||如果前一个命令失败,将执行下一个命令。
set /p "var=[y/n]?" || goto :noUserInput
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
973 次 |
| 最近记录: |