windows - 批处理命令如何为 set/p 制作列表

标签 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

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

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

最佳答案

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

: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/

相关文章:

windows - 如何将批处理脚本插入后台并否认它?

windows - NetBeans PHP 不会因异常而中断

c# - 使用C#隐藏任务栏

Windows 批处理 - 删除隐藏文件

windows - 从字符串中提取第一个字符

loops - 赢得命令: batch string replacement deletes "!"

windows - 问golang中的LookupTXT函数

c++ - 将 kde 应用程序移植到 windows

batch-file - 无效号码。数字常量是十进制 (17)、十六进制 (0x11) 或八进制 (021)

batch-file - 用户按 Enter 键后批处理文件关闭