Loops 循环中的批处理循环

Loops 循环中的批处理循环,loops,batch-file,netsh,Loops,Batch File,Netsh,正在尝试获取批处理以输出另一批处理文件的网络适配器名称。到目前为止,这是有效的 @echo off set ignore=true for /F "delims=" %%a in ('netsh interface show interface')do call :Sub %%a goto :eof :sub if not "%adapter1%" EQU "" goto :2 set Line=%* if "%Line:~0,10%" EQU "----------" (set ignore

正在尝试获取批处理以输出另一批处理文件的网络适配器名称。到目前为止,这是有效的

@echo off
set ignore=true
for /F "delims=" %%a in ('netsh interface show interface')do call :Sub %%a
goto :eof

:sub
if not "%adapter1%" EQU "" goto :2
set Line=%*
if "%Line:~0,10%" EQU "----------" (set ignore=false & goto :eof)
if %ignore% EQU true goto :eof
for /F "tokens=4*" %%b in ('echo %*') do set Adapter1=%%b
echo %Adapter1%
goto :eof
)

:2
for /F "tokens=4*" %%c in ('echo %*') do set Adapter2=%%c
echo %adapter2%
pause
但是有没有一种方法可以循环第二部分,以便输出继续 适配器#=“适配器名称”,直到没有适配器为止

我试着用

set /a c=1
    :sub
for /F "tokens=4*" %%c in ('echo %*') do (
set /a c=c+1
Set Adapter%c%=%%b
echo %adapter2%
)
尝试调用由变量构成的变量时出现了两个问题,即%adapter%c%%

另一个是,我不知道如何将这个循环到下一行

我意识到我可以继续扩大这一点,但这将是可怕的

@echo off
set ignore=true
for /F "delims=" %%a in ('netsh interface show interface')do call :Sub %%a
goto :eof

:sub
if not "%adapter2%" EQU "" goto :3
if not "%adapter1%" EQU "" goto :2
set Line=%*
if "%Line:~0,10%" EQU "----------" (set ignore=false & goto :eof)
if %ignore% EQU true goto :eof
for /F "tokens=4*" %%b in ('echo %*') do set Adapter1=%%b
echo %Adapter1%
goto :eof
)

:2
for /F "tokens=4*" %%c in ('echo %*') do set Adapter2=%%c
echo %adapter2%
pause

:3
for /F "tokens=4*" %%c in ('echo %*') do set Adapter3=%%c
echo %adapter3%
pause
沮丧>,我无法理解它应该如何工作。谢谢你的帮助。谢谢

  • 跳过输出的前3行要容易得多
  • 由于适配器名称可能包含空格,因此使用
    tokens=4的方法无法工作,
    在下一个for var中,使用星号捕捉解析行的剩余部分

样本输出:

> Q:\Test\2019\03\15\SO_55189424.cmd
Adapter1=VirtualBox Host-Only Network
Adapter2=Ethernet
Adapter3=Ethernet 2

for/F“skip=3 tokens=4*%a in('netsh interface show interface')do@echo%a
(在打开的
cmd
提示符下尝试)谢谢你,约瑟夫这太棒了,谢谢你。最后一行是如何工作的?这不是我想使用set函数的方式。没有等号的set会输出所有匹配开始的变量。我们可以将其用于任何通配符,还是只匹配开始?也就是说,如果您有数字变量,Variable1 SecondVarrible1,variable2secondvarrible2您能调用“Set%*variable!Number!%”吗?对不起,它只匹配开头。
> Q:\Test\2019\03\15\SO_55189424.cmd
Adapter1=VirtualBox Host-Only Network
Adapter2=Ethernet
Adapter3=Ethernet 2