网站新手和一般脚本。我知道您可以创建这样的用户输入:
if "%input%"=="y" goto a:
然后您可以询问使用“if”来查看它们是否是某些响应。例如:
if "%input%" NEQ "y" goto b:
并通过说
检查是否没有输入if "%input%"==[ENTER] goto a:
因为我没有受过教育,我不知道如何做到这一点,但我希望能够确定输入是否是输入击键。 我试图通过使用
来实现这一目标if "%input%"==enter
和
null
以及我能想到的每种方法来确定击键是否为[ENTER]。我可能只是愚蠢,但是有办法做到这一点吗?感谢。
答案 0 :(得分:4)
至少有两种方法:检查值或检查操作
set /p
检索存储在变量中的类型输入,但是当没有输入时,只按 Enter 按下,变量上没有存储操作,所以它保留了以前的变量值。
测试值的常用方法是清除变量内容,使用set /p
并测试是否定义了变量,即它有内容
set "var="
set /p "var=[y/n]?"
if not defined var goto :noUserInput
我们也可以测试操作本身。在批处理文件中,大多数命令设置为某个值,内部errorlevel
变量表示命令执行成功或失败。
在set /p
的情况下,如果检索到数据,它将errorlevel
设置为0,如果没有输入则将其设置为1。然后if errorlevel
构造可用于确定是否有输入
set /p "var=[y/n]?"
if errorlevel 1 goto :noUserInput
正如Aacini指出的那样,这可能会失败。如果批处理文件具有.bat
扩展名,则读取数据的set /p
将不会重置(设置为0)先前的errorlevel
值,因此必须先执行一些命令来设置{ {1}}为0。
errorlevel
如果批量文件以ver > nul
set /p "var=[y/n]?"
if errorlevel 1 goto :noUserInput
扩展名保存,则不需要。在这种情况下,.cmd
会在读取数据时将set /p
设置为0.
也可以使用条件执行运算符(errorlevel
和&&
)。 ||
如果前一个命令成功,则执行下一个命令。如果前一个命令失败,&&
将执行下一个命令。
||
答案 1 :(得分:1)
If not defined input ...
检测input
是否具有指定值。
编码
set "input="
set /p "input=[y/n]: "
if not defined input echo Enter alone detected
应该单独检测输入键。
语法set "var=string"
确保行上的尾随空格不包含在指定的值中(很难看到)。
请注意,简单 Enter 的响应将使目标变量保持不变;它不会为变量分配 nothing 。因此,明智的做法是确保在手动输入之前清除变量。