1

我正在处理一个批处理文件,该文件生成一个文本文件,其中包含以下格式的名称列表

Name1
Name2
Name3
etc...

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

所以

Menu
1 Name1
2 Name2
etc...

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

任何帮助将不胜感激。

4

2 回答 2

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%]!

有关更详细的解释,请查看此答案

于 2012-05-26T18:48:42.053 回答
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上面相同的循环来显示菜单。

于 2012-05-27T00:26:55.980 回答