我正在处理一个批处理文件,该文件生成一个文本文件,其中包含一个格式为
的名称列表Name1
Name2
Name3
etc...
我想要做的是创建一个菜单,从文本文件中提取条目以创建选项。
所以
Menu
1 Name1
2 Name2
etc...
我可以创建菜单本身,但它从文件中获取数据并分配给难以理解的变量。我看过FOR命令,但我想我的大脑并没有环绕它。有没有人有任何代码执行上述操作?
非常感谢任何协助。
答案 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
循环来显示菜单。