@miceZipper

BAT файл. Как вывести список сетевых интерфейсов?

Имею несколько сетевых интерфейсов. Хочу вывести их список с помощью BAT файла в формате: номер - название - IP. Составил BAT-файл, но он выводит только первый интерфейс. Никак не могу отладить и понять в чем дело.

@echo off
setlocal enabledelayedexpansion
set /A COUNTER=0
set IFACE=
set IFACE_IP=
echo Выберите номер сетевого интерфейса:
echo.

FOR /F "usebackq skip=2 delims=" %%a IN (`netsh interface show interface`) DO (
FOR /F "tokens=4* delims= " %%b IN (^"%%a^") DO (
set /A COUNTER+=1
set IFACE=%%b %%c
FOR /F "usebackq skip=5 tokens=5 delims= " %%d IN (`netsh interface ipv4 show ipaddresses ^"!IFACE!^" normal`) DO (
set IFACE_IP=%%d
echo! COUNTER! - IFACE! - IFACE_IP!
)
)
)
pause

Мои интерфейсы:
  • Вопрос задан
  • 2641 просмотр
Решения вопроса 1
@raincons
Все верно, но у вас к именам интерфейсов из 1-го слова лишний пробел добавляется:
set IFACE=%%b %%c
             ^
          вот тут

лучше весь хвост netsh interface show interface после 3-го токена пихать в переменную:
@echo off
setlocal enabledelayedexpansion
set /A COUNTER=0
set IFACE=
set IFACE_IP=
echo Выберите номер сетевого интерфейса:
echo.

FOR /F "usebackq skip=2 delims=" %%a IN (`netsh interface show interface`) DO (
  FOR /F "tokens=3* delims= " %%b IN (^"%%a^") DO (
    set /A COUNTER+=1
    set IFACE=%%c
    FOR /F "usebackq skip=5 tokens=5 delims= " %%d IN (`netsh interface ipv4 show ipaddresses ^"!IFACE!^" normal`) DO (
      set IFACE_IP=%%d
      echo !COUNTER! - !IFACE! - !IFACE_IP!
    )
  )
)
 
pause
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы