循环中的批处理循环



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

@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%
)

这里尝试调用变量的变量,即。%适配器%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的方法,因此无法正常工作,
    使用星号捕获var.
  • 的下一条解析行的其余部分

:: Q:Test2019315SO_55189424.cmd
@Echo off&SetLocal EnableDelayedExpansion
Set Cnt=0
for /f "skip=3 tokens=1-3*" %%A in ('
    netsh interface show interface
') Do (
    Set /A Cnt+=1
    Set "Adapter!Cnt!=%%D"
)
Set Adapter

样本输出:

> Q:Test2019315SO_55189424.cmd
Adapter1=VirtualBox Host-Only Network
Adapter2=Ethernet
Adapter3=Ethernet 2

相关内容

  • 没有找到相关文章

最新更新