Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Сетевые технологии » как загнать имена всех "Подключение по локальной сети" в переменные ?

Ответить
Настройки темы
как загнать имена всех "Подключение по локальной сети" в переменные ?

Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить PM | Цитировать


с помощью команды "netsh interface show interface" можно получить названия всех сетевых интерфейсов.

А мне бы хотелось создать в батнике переменные которые содержали б в себе эти названия, как бы их туда запихнуть ?

Отправлено: 23:14, 29-06-2006

 

Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Можно чуть подробнее о том, как это в конечном счёте должно выглядеть?
Ну вот я выполняю такой батник, в его конце я вызываю set. И что там должно быть на выводе?

Код: Выделить весь код
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\hasherfrog\Application Data
Basemake=C:\Program Files\Microsoft SDK\Include\BKOffice.Mak
Bkoffice=C:\Program Files\Microsoft SDK\.
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=***
ComSpec=C:\WINDOWS\system32\cmd.exe
...
Вот тут чего-то такое-эдакое. Что?
...

Отправлено: 10:19, 06-07-2006 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить PM | Цитировать


Че то я не совсем понял вопрос.

вообщем суть вот в чем:

после выполнения батника с таким вот кодом


Код: Выделить весь код
netsh interface show interface  
pause
получаем следущее на экране (в моем конкретном случае)


Код: Выделить весь код
Состояние адм.  Состояние     Тип              Имя интерфейса  
---------------------------------------------------------------------  
Разрешен                      Выделенный       1394-соединение  
Разрешен                      Выделенный       VMware Network Adapter VMnet1  
Разрешен                      Выделенный       Подключение по локальной сети  
Разрешен                      Выделенный       VMware Network Adapter VMnet8  
Разрешен                      Внутренний       Внутренний  
Разрешен                      Замыкание на себя Замыкание на себя

дак вот мне надо как-то риализовать следующие

set lan1=1394-соединение
set lan2=VMware Network Adapter VMnet1
set lan3=Подключение по локальной сети

и т.д.


надеюсь прояснил ситуацию

Отправлено: 01:49, 07-07-2006 | #3


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


mitiya
Ясно. А нужны именно ВСЕ? Или можно только "Выделенный", например?


И ещё. Вам обязательно bat? Может, vbs? А то громоздко очень получается...

Последний раз редактировалось hasherfrog, 07-07-2006 в 12:50.


Отправлено: 10:14, 07-07-2006 | #4


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@echo off
if exist "___1.tmp" del "___1.tmp"

for /f "TOKENS=3-9 DELIMS= " %%A in ('netsh interface show interface ^| find "Выделенный"') do echo %%A %%B %%C %%D %%E %%F %%G >> ___1.tmp
SET N=0
for /f "tokens=* eol=" %%A in (___1.tmp) do SET /A N+=1

set i=0
:again

if "%I%" == "%N%" goto end

if exist "___2.tmp" del "___2.tmp"

if "%I%" == "0" (
  for /f "tokens=* eol=" %%A in (___1.tmp) do (
    if not exist "___2.tmp" ( 
      Set C=%%A
      echo "" > ___2.tmp
    )
  )
) else (
 for /f "skip=%I% tokens=* eol=" %%A in (___1.tmp) do ( 
    if not exist "___2.tmp" ( 
      Set C=%%A
      echo "" > ___2.tmp
    )
  )
)

set /A I+=1
SET Lan%I%=%C%
goto again 


:end
del ___1.tmp
del ___2.tmp

set | find "Lan"
Примечания.
1. Переменные окружения не экспортируются, не забыли? Действуют только внутри батника. Чтобы проэкспортировать их (вывести за пределы батника), используйте специальные утилиты.
2. Фиксируются только "Выделенные" интерфейсы. Проверка идёт по слову "Выделенный" после "^| find". Если вдруг не работает, убедитесь, что написано слово в _правильной_ кодировке.
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:01, 07-07-2006 | #5


Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить PM | Цитировать


Спасибо большёе.

Работает. Только не понятно как :-)

Отправлено: 02:00, 09-07-2006 | #6


Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить PM | Цитировать


обнаружилась маленькая проблемка

значение в переменную записывается с пробелами в конце ,а надо без

т.е.

вот как получается

"Подключение по локальной сети "

а вот как должно

"Подключение по локальной сети"

у названий с разной длинной разное количество пробелов (такчто не удасться просто отрезать)

Отправлено: 02:30, 09-07-2006 | #7


(*.*)


Сообщения: 36491
Благодарности: 6675

Профиль | Сайт | Отправить PM | Цитировать


Цитата:
Работает. Только не понятно как :-)
Для начала используется команда FOR, где TOKENS - элементы, получаемые разделителем, указанным в DELIMS. Элементы ищутся в результатах работы команды netsh interface show interface, после чего каждому элементу назначается буквенная переменная и заносится во временный файл. Далее работа ведется с этим файлом по схожему принципу.

-------
Канал Windows 11, etc | Чат @winsiders


Отправлено: 04:35, 09-07-2006 | #8


Аватара для hasherfrog

Старый параноик


Сообщения: 2423
Благодарности: 85

Профиль | Отправить PM | Цитировать


>> обнаружилась маленькая проблемка
Решение загромоздит текст, но вот:

Код: Выделить весь код
@echo off
if exist "___1.tmp" del "___1.tmp"

for /f "TOKENS=3-9 DELIMS= " %%A in ('netsh interface show interface ^| find "Выделенный"') do (
if "%%B" == "" ( echo %%A>> ___1.tmp
) else ( if "%%C" == "" ( echo %%A %%B>> ___1.tmp
) else ( if "%%D" == "" ( echo %%A %%B %%C>> ___1.tmp
) else ( if "%%E" == "" ( echo %%A %%B %%C %%D>> ___1.tmp
) else ( if "%%F" == "" ( echo %%A %%B %%C %%D %%E>> ___1.tmp
) else ( if "%%G" == "" ( echo %%A %%B %%C %%D %%E %%F>> ___1.tmp
) else ( echo %%A %%B %%C %%D %%E %%F %%G>> ___1.tmp
) ) ) ) ) ) )

SET N=0
for /f "tokens=* eol=" %%A in (___1.tmp) do SET /A N+=1

set i=0
:again

if "%I%" == "%N%" goto end

if exist "___2.tmp" del "___2.tmp"

if "%I%" == "0" (
  for /f "tokens=* eol=" %%A in (___1.tmp) do (
    if not exist "___2.tmp" ( 
      Set C=%%A
      echo "" > ___2.tmp
    )
  )
) else (
 for /f "skip=%I% tokens=* eol=" %%A in (___1.tmp) do ( 
    if not exist "___2.tmp" ( 
      Set C=%%A
      echo "" > ___2.tmp
    )
  )
)

set /A I+=1
SET Lan%I%=%C%
goto again 


:end
if exist "___1.tmp" del "___1.tmp"
if exist "___2.tmp" del "___2.tmp"

set | find "Lan"
>> Только не понятно как :-)

"Интересность" тут одна: выставление флажка внутри for-цикла (). Решается двумя способами: заменой for на if-goto (когда возможно) либо использование флажка "есть файл" (когда невозможно). Есть ещё один вариант обхода - подпрограммы (в том чисте, подпрограммы прямо внутри данного батника), но я не стал это тут втыкать. :-) А в принципе, Vadikan описал что да как.

Почему "интересность" - потому что внутри for-цикла крайне проблематично использовать переменные окружения ;-)
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:58, 09-07-2006 | #9


Старожил


Сообщения: 440
Благодарности: 12

Профиль | Отправить PM | Цитировать


Круто, работает. Ох спасибо ,спасибо.

Отправлено: 22:16, 09-07-2006 | #10



Компьютерный форум OSzone.net » Компьютеры + Интернет » Сетевые технологии » как загнать имена всех "Подключение по локальной сети" в переменные ?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Настройка "Подключения по локальной сети" с помощью CMD Oleg48 Скриптовые языки администрирования Windows 94 22-08-2013 17:36
[решено] Переменные среды папок "Мои рисунки", "Моя музыка" или общие Redew Автоматическая установка Windows 2000/XP/2003 9 03-10-2009 20:43
[решено] Доступ к локальной сети через входящее "Dial up" подключение Eugene R Microsoft Windows NT/2000/2003 6 10-03-2009 09:54
Прочее - Есть другой способ отключить "подключение по локальной сети"? Easyup Сетевые технологии 2 10-12-2007 09:42
Сообщение "В сети существуют совпадающие имена" Ser6720 Хочу все знать 5 06-05-2007 13:03




 
Переход