我正在尝试生成一个请求用户输入的批处理脚本。
用户输入应限于某些单词。如果用户输入了其他单词(例如,EN,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(涅盘)。你可能不想在屏幕上看到它。
||的工作方式与“如果上一个命令(find)失败,则”(相反的是&&

关于windows - 批处理命令如何列出set/p,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35256828/

10-15 17:45