Batch file 如何批量检查列表中是否包含字符串

Batch file 如何批量检查列表中是否包含字符串,batch-file,Batch File,如果可能的话,我会尽量避免使用批处理,因为我不喜欢它的语法,也不喜欢缺少内置的IDE,所以我基本上是个初学者。我想做的是编写一个安装程序,主要是用python编写的,但这部分必须成批完成,我已经编写了所有的安装说明,但我现在仍在检查用户的输入。我想让它做的是让用户输入(完成),然后告诉它是yes,yes,y还是y,如果是,然后安装该部分程序。我决定尝试使用列表,因为这似乎是最简单的方法,但老实说,我以前从未批量使用过它们,因此不知道它们是如何工作的。所以基本上我想检查列表中是否存在变量 我知道以

如果可能的话,我会尽量避免使用批处理,因为我不喜欢它的语法,也不喜欢缺少内置的IDE,所以我基本上是个初学者。我想做的是编写一个安装程序,主要是用python编写的,但这部分必须成批完成,我已经编写了所有的安装说明,但我现在仍在检查用户的输入。我想让它做的是让用户输入(完成),然后告诉它是
yes
yes
y
还是
y
,如果是,然后安装该部分程序。我决定尝试使用列表,因为这似乎是最简单的方法,但老实说,我以前从未批量使用过它们,因此不知道它们是如何工作的。所以基本上我想检查列表中是否存在变量

我知道以前可能有人问过这个问题,但我找不到一个能满足我问题的答案(诚然,我本可以更仔细地看,但我累了)

提前感谢您的帮助

choice /c YN
If errorlevel 2 echo No Selected
If errorlevel 1 echo Yes Selected

我不喜欢发布他们不喜欢的批处理然后问问题的人。

虽然
选择
(如中所建议)可能是此类用户输入查询的最佳方式,但我仍然想向您展示另一种方法(仅使用内置命令):

set/p
命令提示您输入。级联的
if
命令构成一种逻辑AND;如果您键入的不是
y
yes
,则与
not
键一起满足条件;
/I
开关使比较不区分大小写

当然,您可以将任何命令放在代码中的其他位置,而不是
echo
-s,或者
goto


请注意,需要启用命令扩展(根据Windows的默认设置)才能使其工作(有关详细信息,请在命令提示窗口中键入
set/?
,以及
cmd/?
)。

感谢您的回答,它对我非常有效。很抱歉,我打扰了您,但我和其他大多数人一样,主要是发布了我/我们不喜欢batch这一事实,以此作为我不喜欢batch的借口。batch的历史记录是一种简单、循序渐进的语言,可以自动或反映您在操作计算机时键入的内容。IBM OS/2工程师在batchfile中改进了编程概念。按设计使用它是一种简单易懂的语言(与您键入的内容完全相同)。在IBM和后来的微软的改进下,它成了一顿狗餐。更糟糕的是,它的未设计行为被一些人视为特性,使其成为三位一体。我知道批处理的设计目的是易于使用,但它的语法与其他编程语言(例如:python和javascript)不同,我个人更喜欢使用它们,因为我使用它们的时间最长,所以我习惯了它们的语法。批处理对于复制或删除文件和启动程序很有用。任何其他语言(哪一批不是)都是最好的。
set /P QUERY="Say yes or no: "
if /I not "%QUERY%"=="y" if /I not "%QUERY%"=="yes" goto :NO
:YES
echo You said "yes".
goto :SKIP
:NO
echo You said "no" or something else.
:SKIP
rem Continue script here...