当我输入带空格的输入时,批量cmd退出

时间:2018-01-16 13:27:19

标签: batch-file

我正在为用户界面编写批处理脚本,您可以在其中输入数字1 - 10.这非常类似于以下示例:

@echo OFF
:ask
cls
echo press 1 for test1
echo press 2 for test2
set /p input=
if %input% == 1 goto test1
if %input% == 2 goto test2
if %input% GTR 10 goto ask
goto ask
:test1
shutdown
:test2
net view
pause
goto ask

我有%输入%GTR 10转到问题,并且最后goto在全球询问,因为如果有人输入不同的东西,它将回到问题。 当我输入不同的东西时,为什么它会让我失去终端?

1 个答案:

答案 0 :(得分:2)

如果输入带空格的字符串,if语法将给出语法错误。我们来看看:

if hello world == string echo xyz

if语法为:if <value1> <comparator> <value2> command
所以hello是value1,world是比较器 - 等等 - 什么? world不是比较器 - 语法错误。

将您的值包含在quoutes中以确保安全:

if "hello world" == "string" echo xyz

因此"hello world"是value1,==是比较器,"string"是value2,echo xyz是命令。一切顺利。

您可能对choice命令感兴趣,该命令执行错误处理并仅允许有效密钥。