我正在尝试制作一个要求用户输入的批处理脚本。 用户输入应限于某些词。如果用户输入任何其他词而不是例如(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
现在我如何列出所有接受的词并使这些词成为输入中唯一接受的词?
单词列表很长,我可能不需要在这里包含它。
最佳答案
将列表放入文件并将您的输入与该文件进行比较:
: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(必杀技)。您可能不想在屏幕上看到它。
||
相当于“如果之前的命令(查找)失败,则”(相反的是 &&
)
关于windows - 批处理命令如何为 set/p 制作列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35256828/