10个以上时的批处理文件选择命令

batch file choice command when more than 10 number

我只想列出我所有的接口网络并选择一个。 但是,我有超过 10 个接口(实际上是 12 个)然后出现错误。无法做出选择 我如何使用 ABCDEFGHIJKLMNOPQ... 代替 12345678... 这是我的代码:

'''

@echo off
cls
setLocal enableDelayedExpansion
set c=0
set "choices="

echo Your Interfaces -

for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do (

    set /a c+=1
    set int!c!=%%B
    set choices=!choices!!c!
    echo [!c!] %%B
)

choice /c !choices! /m "Select The Number of Your Interface Please: " /n

set interface=!int%errorlevel%!
set Connex="%interface%"

'''

通过添加将给定索引转换为给定列表中的字符的函数 keys,您可以添加更多选项。由于 errorlevel 以 1 开头,因此永远无法使用 0 索引,因此它只是由一个无用的 _ 填充。 您可以将任何字符(在选择命令中有效)添加到键列表。 如果你想以数字开头,然后是字母,你可以这样做 set keys=_123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ

@echo off
cls
setLocal enableDelayedExpansion
set c=0
set "choices="
echo Your Interfaces -

for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do (
    
    set /a c+=1
    
    call :ResolveChar !c!
    
    set int!retval!=%%B
    set choices=!choices!!retval!
    echo [!retval!] %%B
)

choice /c !choices! /m "Select The Number of Your Interface Please: " /n

call :ResolveChar %errorlevel%
set interface=!int%retval%!
set Connex="%interface%"
echo %Connex%

goto :eof

:ResolveChar
SETLOCAL
  set keys=_ABCDEFGHIJKLMNOPQRSTUVWXYZ
  set _startchar=%1
  CALL SET char=%%keys:~%_startchar%,1%%
ENDLOCAL & SET retval=%char%

goto :eof