Форум программистов, компьютерный форум, киберфорум
VBScript/JScript/WSH/WMI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/34: Рейтинг темы: голосов - 34, средняя оценка - 4.94
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
VBS

Определить MAC-адреса компьютеров, из указанного списка (задан ip адрес)

09.03.2017, 23:04. Показов 6761. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите написать vbs-скрипт для определения MAC-адреса компьютеров, из указанного списка (задан ip адрес)

Знаю как это будет в bat, а вот с vbs все сложнее. Буду очень благодарен тому, кто может помочь.

Bash
1
2
3
4
arp -a >> file.txt
findstr "192.168.0.1" file.txt && findstr "224.0.0.22" file.txt
echo ' ' >file.txt
pause
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.03.2017, 23:04
Ответы с готовыми решениями:

Как узнать MAC-адреса компьютеров в сети?
Delphi: Как узнать МАК адреса компьютеров в сети ? Помогите

Как узнать mac-адреса компьютеров в сети?
Добрый день. Можно как-нибудь узнать mac-адреса компьютеров в сети (в смысле автоматически)?

Найдите в заданной папке MAC адреса, которые, например, 02.03.2014 получили адрес 10.24.11.20
Найдите в заданной папке MAC адреса, которые, например 02.03.2014 получили адрес 10.24.11.20. Решение покажу после предложенных вами...

8
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
10.03.2017, 10:10
Лучший ответ Сообщение было отмечено c_gvn_code как решение

Решение

Пример:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
strIP = "192.168.0.101"
Set objStdOut = CreateObject("WScript.Shell").Exec("arp -a " & strIP).StdOut
While Not objStdOut.AtEndOfStream
    strTemp = Trim(objStdOut.ReadLine)
    If InStr(strTemp, strIP) > 0 Then
        strMAC = Split(Trim(Split(strTemp, strIP)(1)), " ")(0)
    End If
Wend
If Len(strMAC) > 0 Then
    WScript.Echo strMAC
Else
    WScript.Echo "Not found"
End If
1
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
12.03.2017, 19:01  [ТС]
Dmitrii, спасибо большое, а можете, если не затруднит, сделать динамический массив с айпишниками, чтобы можно было несколько айпи проверить и вывод нескольких мак-вадресов? Сам попробовал, не получилось

Или динамический массив(или любое кол-во элементов больше нуля) или чтение из файла .txt
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
13.03.2017, 05:50
Лучший ответ Сообщение было отмечено c_gvn_code как решение

Решение

Вариант с чтением IP-адресов из файла, где в каждой строке указан один адрес:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Dim objFS, objFile, objWShell, objStdOut, arrIP, strPath, strList, strMAC, strTemp, i
 
strPath = "D:\Temp\"
Set objFS = CreateObject("Scripting.FileSystemObject")
If objFS.FileExists(strPath & "IP.txt") Then
    arrIP = Split(objFS.OpenTextFile(strPath & "IP.txt", 1).ReadAll, vbNewLine)
    Set objWShell = CreateObject("WScript.Shell")
    For i = 0 To UBound(arrIP)
        If Len(arrIP(i)) > 0 Then
            Set objStdOut = objWShell.Exec("arp -a " & arrIP(i)).StdOut
            While Not objStdOut.AtEndOfStream
                strTemp = Trim(objStdOut.ReadLine)
                If InStr(strTemp, arrIP(i)) > 0 Then strMAC = Split(Trim(Split(strTemp, arrIP(i))(1)), " ")(0)
            Wend
            If Len(strMAC) > 0 Then
                strList = strList & arrIP(i) & " = " & strMAC & vbNewLine
                strMAC = vbNullString
            Else
                strList = strList & arrIP(i) & " = Not found" & vbNewLine
            End If
        End If
    Next
    Set objFile = objFS.CreateTextFile(strPath & "IP-to-MAC.txt", True)
    objFile.Write strList
    objFile.Close
    Set objWShell = Nothing: Set objStdOut = Nothing: Set objFile = Nothing
    WScript.Echo "Готово."
Else
    WScript.Echo "Не найден файл " & UCase(strPath & "IP.txt")
End If
Set objFS = Nothing
WScript.Quit 0
1
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
13.03.2017, 19:55  [ТС]
Dmitrii, не подскажете, почему так происходит?
Миниатюры
Определить MAC-адреса компьютеров, из указанного списка (задан ip адрес)  
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
13.03.2017, 19:57  [ТС]
от имени администратора запускать пробовал, менять на верхний регистр расширение тоже
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
13.03.2017, 20:29
Цитата Сообщение от c_gvn_code Посмотреть сообщение
... менять на верхний регистр расширение тоже
Это бессмысленно.
Цитата Сообщение от c_gvn_code Посмотреть сообщение
... почему так происходит?..
Единственное, что приходит в голову, проверить, нет ли в названии вашей папки ТЕМР символов кириллицы.
Впрочем, вот вариант сценария, в котором исходный и результирующий файлы должны располагаться на рабочем столе:
Кликните здесь для просмотра всего текста
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Dim objFS, objFile, objWShell, objStdOut, arrIP, strPath, strList, strMAC, strTemp, i
 
strPath = CreateObject("Shell.Application").NameSpace(&h0).Self.Path
Set objFS = CreateObject("Scripting.FileSystemObject")
strTemp = objFS.BuildPath(strPath, "IP.txt")
If objFS.FileExists(strTemp) Then
    arrIP = Split(objFS.OpenTextFile(strTemp, 1).ReadAll, vbNewLine)
    Set objWShell = CreateObject("WScript.Shell")
    For i = 0 To UBound(arrIP)
        If Len(arrIP(i)) > 0 Then
            Set objStdOut = objWShell.Exec("arp -a " & arrIP(i)).StdOut
            While Not objStdOut.AtEndOfStream
                strTemp = Trim(objStdOut.ReadLine)
                If InStr(strTemp, arrIP(i)) > 0 Then strMAC = Split(Trim(Split(strTemp, arrIP(i))(1)), " ")(0)
            Wend
            If Len(strMAC) > 0 Then
                strList = strList & arrIP(i) & " = " & strMAC & vbNewLine
                strMAC = vbNullString
            Else
                strList = strList & arrIP(i) & " = Not found" & vbNewLine
            End If
        End If
    Next
    Set objFile = objFS.CreateTextFile(objFS.BuildPath(strPath, "IP-to-MAC.txt"), True)
    objFile.Write strList
    objFile.Close
    Set objWShell = Nothing: Set objStdOut = Nothing: Set objFile = Nothing
    WScript.Echo "Готово."
Else
    WScript.Echo "Не найден файл " & UCase(strTemp)
End If
Set objFS = Nothing
WScript.Quit 0
0
0 / 0 / 0
Регистрация: 20.10.2015
Сообщений: 59
13.03.2017, 21:57  [ТС]
Dmitrii, тоже самое, не понимаю почему, видимо это что-то не так с моей виндой
0
2619 / 549 / 109
Регистрация: 21.03.2012
Сообщений: 1,051
14.03.2017, 12:19
А чтение файла-то, хотя бы, выполняется?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.03.2017, 12:19
Помогаю со студенческими работами здесь

Недопустимый MAC-адрес. MAC-адрес не может быть адресом рассылки
Привет! Потребовалось выполнить привязку IP-адреса к MAC-адресу двух устройств. С первым устройством все получилось удачно. При...

Определить IP-адреса компьютеров, установивших подключение с данным компьютером
Народ весь нет облазил в поисках, помогите с заданием: Определить ip адреса компьютеров установивших подключения с данным...

Определить действительный MAC адреса
Простите если не в тему, как определить что MAC адрес не правильный?

Определить MAC-адрес удаленно
Добрый вечер, спецы. Вопрос стал ребром - нужно получить mac удаленной машины (роута) под *nix'ами по ip. Реально ли это? ЗЫ...

Как определить mac адрес шлюза
Ребят, подскажите пожалуйста Как через cmd и ipconfig определить mac адрес шлюза Что-то немного не понимаю


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru