我正在处理一个批处理文件,该文件生成一个文本文件,其中包含以下格式的名称列表
Name1
Name2
Name3
etc...
我想做的是创建一个菜单,从文本文件中提取条目以创建选项。
所以
Menu
1 Name1
2 Name2
etc...
我可以创建菜单本身,但它从文件中获取数据并分配给让我难过的变量。我看过 FOR 命令,但我想我的大脑并没有环绕它。有没有人有任何代码可以完成上述操作?
任何帮助将不胜感激。
我正在处理一个批处理文件,该文件生成一个文本文件,其中包含以下格式的名称列表
Name1
Name2
Name3
etc...
我想做的是创建一个菜单,从文本文件中提取条目以创建选项。
所以
Menu
1 Name1
2 Name2
etc...
我可以创建菜单本身,但它从文件中获取数据并分配给让我难过的变量。我看过 FOR 命令,但我想我的大脑并没有环绕它。有没有人有任何代码可以完成上述操作?
任何帮助将不胜感激。
@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%]!
有关更详细的解释,请查看此答案
如果您在循环中逐行生成文本文件,则可以将以下计数器添加到循环中:
…
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
上面相同的循环来显示菜单。