使用外部文本文件创建批处理菜单

时间:2012-05-25 18:29:09

标签: batch-file

我正在处理一个批处理文件,该文件生成一个文本文件,其中包含一个格式为

的名称列表
Name1
Name2
Name3
etc...

我想要做的是创建一个菜单,从文本文件中提取条目以创建选项。

所以

Menu
1 Name1
2 Name2
etc...

我可以创建菜单本身,但它从文件中获取数据并分配给难以理解的变量。我看过FOR命令,但我想我的大脑并没有环绕它。有没有人有任何代码执行上述操作?

非常感谢任何协助。

2 个答案:

答案 0 :(得分:1)

@echo off
setlocal EnableDelayedExpansion
echo Menu
set i=0
for /F "delims=" %%a in (theTextFile.txt) do (
   set /A i+=1
   set "name[!i!]=%%a"
   echo !i! %%a
)
set lastOpt=%i%
:getOption
set /P "opt=Enter desired option: "
if %opt% gtr %lastOpt% (
   echo Invalid option
   goto getOption
)
echo Process !name[%opt%]!

有关更详细的说明,请查看this answer

答案 1 :(得分:0)

如果要在循环中逐行生成文本文件,可以将以下计数器添加到循环中:

…
SET /A cnt+=1
…

然后你会在另一个循环中使用它,这个循环将以编号列表的形式输出行:

…
<YourFile.txt (
  FOR /L %%L IN (1,1,%cnt%) DO (
    SET /P line=
    SETLOCAL EnableDelayedExpansion
    ECHO %%L !line!
    ENDLOCAL
  )
)

但是,如果您的文本文件是作为单个命令(或者可能是几个命令)的输出生成的,那么您可以像这样计算这些行:

…
FOR /F %%C IN ('FIND /C /V "" ^<YourFile.txt') DO SET cnt=%%C
…

然后您可以使用与上面相同的FOR /L循环来显示菜单。