Batch file 转到批处理中无法正常工作?

Batch file 转到批处理中无法正常工作?,batch-file,Batch File,我在批量游戏中设置了一些东西。当确定输入一个选项并点击“回车”时,它将转到以a开头的下一个选项:(我不知道它叫什么) 当用户输入“Y”时,它不会转到“Youtube” 您将其设置为,当用户按下n时,它会进入youtube,而不是当用户输入y时,就像您在问题中所说的: if %option%==N cls goto :youtube 在你发布问题之前,请先看看你使用的代码在做什么 世界上最简单的代码清除系统之一也是如此。按空格键4次或突出显示并按下“代码示例”按钮有多困难 Mona.基本上,您在

我在批量游戏中设置了一些东西。当确定输入一个选项并点击“回车”时,它将转到以a开头的下一个选项:(我不知道它叫什么)

当用户输入“Y”时,它不会转到“Youtube”


您将其设置为,当用户按下
n
时,它会进入youtube,而不是当用户输入
y
时,就像您在问题中所说的:

if %option%==N cls goto :youtube
在你发布问题之前,请先看看你使用的代码在做什么

世界上最简单的代码清除系统之一也是如此。按空格键4次或突出显示并按下
“代码示例”
按钮有多困难


Mona.

基本上,您在CLS之后缺少了一个命令分隔符,但我做了一些其他更改,例如
/I
不区分大小写比较,并使检查例程对空格或无输入更为健壮

:visitoption
echo Would you like to visit the RST Garry's mod gaming community website?
set /p option=Y or N:
if /i "%option%"=="Y" start "" chrome "(Censored link)"
if /i "%option%"=="N" cls & goto :youtube
goto :visitoption
“东西”称为
标签

由于您无法控制用户类型,因此应该使用

if "%option%"=="Y" start chrome (Censored link)
也就是说,引用比较的两个方面(这不是防弹的,但在用户没有故意破坏您的系统的情况下可以充分发挥作用)

/i
开关添加到
if
将使比较不区分大小写

if defined option set "option=%option:~0,1%"
选项设置为仅第一个字符

请注意,如果用户只需输入回复,那么变量的值将保持不变。你可以利用这一特点为自己谋利

set "option=defaultvalue"
set /p option=Y or N:
如果用户只需输入即可回复,则将选项设置为
defaultvalue

start
将独立启动流程。批处理只是继续执行下一条语句。对于此实例,您可能更倾向于使用
start“窗口标题”…
-第一个
引用参数“
被用作窗口标题,而您可能希望它被用作参数,这是
start
的一个怪癖

要在一行中串联一系列命令,需要使用符号AND分隔各个命令&

关闭
echo
一次后,无需再次执行此操作(除非执行
echo on
,您可以在调试过程中执行此操作以显示程序流。)前导@表示
不回显此命令
-如果没有它,初始的
echo off

您可以使用
call:label
执行此批处理文件中从
:label
开始的子例程。如果使用
调用标签
,则执行的“子例程”是可执行的
标签
。这是一个非常重要的区别

出于这个原因,我避免使用
goto:label
,尽管它是有效的,因为冒号是不必要的,并且用于
goto
call
命令之间的一致性

省略冒号方法的一个例外是冒号实际上有影响-goto:eof非常明确地表示“转到该批处理文件的物理端”-标签
:eof
cmd
理解为具有该含义,不应在批处理中定义

set "option=defaultvalue"
set /p option=Y or N: