批处理命令如何为set / p创建列表

时间:2016-02-07 17:43:49

标签: windows batch-file cmd

我正在尝试制作一个要求用户输入的批处理脚本。 用户输入应限于某些单词。如果用户输入任何其他单词,例如(eng,ger,fra)用户会得到一个回音,上面写着“请输入语言”。

我还希望将用户输入存储为变量,以便在批处理文件中进一步使用。

到目前为止我所拥有的是:

:Get_ISOlanguage
set "ISOlanguage="
set /p ISOlanguage=Enter subtitle language in ISO 639-2 standard abbreviation:
if not defined ISOlanguage echo You must enter a value. Try again.&goto Get_ISOlanguage

现在我如何列出所有接受的单词并使这些单词成为输入中唯一可接受的单词?

单词列表很长,我可能不需要在这里包含它。

1 个答案:

答案 0 :(得分:3)

将列表放入文件并将输入与该文件进行比较:

:Get_ISOlanguage
set "ISOlanguage="
set /p "ISOlanguage=Enter subtitle language in ISO 639-2 standard abbreviation: "
find /i "%ISOlanguage%" ISO6392.txt >nul || (echo wrong input & goto :Get_ISOlanguage)

要创建文件,我将列表从here复制到临时文件,并使用for /f "delims=- " %i in (ISO-list.txt) do @echo %i)>ISO6392.txt(一次性任务)提取代码

注意:

我使用set /p "var=prompt: "语法清楚地定义了显示的内容(注意空格,这是提示的一部分)

>nul将命令输出重定向到NUL(必杀技)。你可能不想在屏幕上看到它。

||作为"如果上一个命令(查找)失败,那么" (对面是&&