Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 当我输入带有空格的输入时,batch cmd退出_Batch File - Fatal编程技术网

Batch file 当我输入带有空格的输入时,batch cmd退出

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

我正在为用户界面编写一个批处理脚本,您可以在其中输入数字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,因为如果有人键入不同的内容,它将返回问题。
当我键入不同的内容时,它为什么会使我从终端崩溃?

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

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
也会发生这种情况