要在菜单中使用的编号列表中的文本文件变量的输出内容

Output contents of text file variable in numbered list to be used in a menu

我在思考这个问题时遇到了问题。 我想做的是列出一个文本文件 (%textfile%) 的内容,前面有一个数字,每次打印文本文件的新行时该数字都会递增,然后将该数字分配给输出。为了我的目的,它必须是批处理文件的形式。

示例:

for /f "delims=" %%A in (%textfile%) do (echo %%A & echo.)

输出:

Output1

Output2

Output3

... etc

我希望它做什么:

1. Output1

2. Output2

3. Output3

... etc

这将用于要求您选择以上选项之一的菜单中。 选择 1 会将 Output1 设置为要在另一个脚本中使用的变量。

set /P menuSelect=Please make a selection: 
for /f "delims=0-%highestVariable%" %%a in ("%menuSelect%") do echo Incorrect input, press any key to try again & pause>nul & goto :otherFunction

我想弄清楚的另一件事是如何通过上面代码中的最高数字输出将分隔符设置为 0。这就是我设置 "delims=0-%highestVariable%".

的原因

所以基本上,我如何输出文本文件的内容并分配一个编号,然后允许用户 select 编号输出之一并将其分配给一个变量。

感谢任何帮助,已经坚持了几天。

只需添加一个计数器(您需要 ):

@echo off
setlocal enabledelayedexpansion
set count=0
for /f "delims=" %%A in (%textfile%) do (
  set /a count+=1
  echo !count!. %%A & echo.
)
set numbers=123456789
set numbers=!numbers:~0,%count%!
echo %numbers%
echo on
set /p "select=number: "
for /f "delims=%numbers%" %%a in ("%Select%") do echo Incorrect input, press any key to try again & pause>nul & goto :otherFunction

请注意,您的 delims 技巧可能无法可靠地用于 >=10 的计数器。

另一种计数方式,

@echo off
set/a numOptions=0
for /F "tokens=1,* delims=[]" %%A in ('"type "%textfile%"|find /N /V """') do (
  echo %%A. %%B
  set/A numOptions+=1 
)
echo you have %numOptions% lines in %textfile%
...
...
...
rem your code here