Batch file 当我输入带有空格的输入时,batch cmd退出
我正在为用户界面编写一个批处理脚本,您可以在其中输入数字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 @回音 :问 cls 按1回显测试1 按2进行测试2 设置/p输入= 如果%input%==1,则转到测试1 如果%input%==2转到测试2 如果%input%GTR 10转到询问 去问 :test1 关闭 :test2 网络视图 暂停 去问 我有if%input%GTR 10 goto ask,最后在global中goto ask,因为如果有人键入不同的内容,它将返回问题。Batch file 当我输入带有空格的输入时,batch cmd退出,batch-file,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 pau
当我键入不同的内容时,它为什么会使我从终端崩溃?如果输入带空格的字符串,
如果
语法将给出语法错误。让我们看看:
if hello world == string echo xyz
if
语法为:if命令
那么hello
是value1,world
是比较器-等等-什么world
不是比较器-语法错误
为了安全起见,请将您的值包含在quoutes中:
if "hello world" == "string" echo xyz
因此,“hello world”
是值1,=
是比较器,“string”
是值2,echo xyz
是命令。一切顺利
您可能对该命令感兴趣,该命令自行处理错误,只允许有效键。如果输入带空格的字符串,if
语法将给出语法错误。让我们看看:
if hello world == string echo xyz
if
语法为:if命令
那么hello
是value1,world
是比较器-等等-什么world
不是比较器-语法错误
为了安全起见,请将您的值包含在quoutes中:
if "hello world" == "string" echo xyz
因此,“hello world”
是值1,=
是比较器,“string”
是值2,echo xyz
是命令。一切顺利
您可能对该命令感兴趣,该命令本身进行错误处理,只允许有效密钥。只需处理您需要的情况,将所有其他内容发送到ask
。目前,任何字母或未覆盖的数字(3-9)都将只执行代码,直到到达脚本末尾,因为“如果”都不适用。此外,还需要指定有效的结束标记。当前,您的输入1将执行:test1
,但也将执行test2
。执行所需的代码部分后,应添加goto:eof
。如何发送所有其他问题,这是我的问题从打开的命令行窗口中删除echo off
并再次运行它。你应该知道,出了什么问题,这是很明显的。只要处理好你需要的情况,把其他一切都发送到ask
。目前,任何字母或未覆盖的数字(3-9)都将只执行代码,直到到达脚本末尾,因为“如果”都不适用。此外,还需要指定有效的结束标记。当前,您的输入1将执行:test1
,但也将执行test2
。执行所需的代码部分后,应添加goto:eof
。如何发送所有其他问题,这是我的问题从打开的命令行窗口中删除echo off
并再次运行它。你应该看到,出了什么问题,这很明显。谢谢,但这不是问题,我需要一个类似于的命令,如果不是
,但是有多个操作符,你确定吗?当您使用转到对所有有效选项进行检查时,无需再次检查是否为无效选项
。所有有效的选择都将被处理,因此它必须是一个无效的条目,只有一个无条件的goto:ask
将处理它。是的,有了它,任何东西都会被拒绝返回到ask,但是,如果我输入了包含空格的内容,提示就会退出。我告诉过你,为什么会发生这种情况,以及如何避免它。如果它仍然“崩溃”,请从打开的命令行窗口运行它,并且不使用echo off
进行调试。即使不使用echo off
也会发生。谢谢,但这不是问题,我需要一个类似If not
的命令,但是有多个操作符。你确定吗?当您使用转到对所有有效选项进行检查时,无需再次检查是否为无效选项
。所有有效的选择都将被处理,因此它必须是一个无效的条目,只有一个无条件的goto:ask
将处理它。是的,有了它,任何东西都会被拒绝返回到ask,但是,如果我输入了包含空格的内容,提示就会退出。我告诉过你,为什么会发生这种情况,以及如何避免它。如果它仍然“崩溃”,请从打开的命令行窗口运行它,并且不使用echo off
进行调试。即使不使用echo off
也会发生这种情况