Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Парсинг ответа консоли CMD (VBS) (http://forum.oszone.net/showthread.php?t=256291)

andr_mozg 14-03-2013 13:42 2111013

Парсинг ответа консоли CMD (VBS)
 
Как правельно распарсить в фоне, ответ команды ipconfig /all

надо получить список всех физических адресов (MAC)

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

Спасибо

DmitriiV 14-03-2013 17:07 2111209

Один из возможных вариантов (на VBS):
читать дальше »
Код:

Dim objWShell, objExec, objStream, objRegExp, objMatches
Dim strTemp, arrTemp, i, j, strErr
Set objWShell = CreateObject("WScript.Shell")
On Error Resume Next
Set objExec = objWShell.Exec("ipconfig.exe /all")
WScript.Sleep 2000
If Err.Number = 0 Then
    strTemp = vbNullString
    Set objStream = objExec.StdOut
    While Not objStream.AtEndOfStream
        strTemp = strTemp & Trim(objStream.ReadLine) & vbNewLine
    Wend
    Set objStream = Nothing
    If Err.Number = 0 Then
        arrTemp = Split(strTemp, vbNewLine): strTemp = vbNullString
        Set objRegExp = CreateObject("VBScript.RegExp")
        objRegExp.Global = True
        objRegExp.IgnoreCase = True
        objRegExp.Pattern = "(([a-z]|\d){2}-){5}([a-z]|\d){2}"
        For i = 0 To UBound(arrTemp)
            Set objMatches = objRegExp.Execute(arrTemp(i))
            If Err.Number = 0 Then
                For j = 0 To objMatches.Count - 1
                    strTemp = strTemp & objMatches.Item(j).Value & vbNewLine
                Next
            Else
                strErr = strErr & arrTemp(i) & vbNewLine
                Err.Clear
            End If
        Next
        Set objMatches = Nothing
        Set objRegExp = Nothing
        If Len(strTemp) > 0 Then
            WScript.Echo strTemp
        Else
            WScript.Echo "Ничего не найдено."
        End If
        If Len(strErr) > 0 Then WScript.Echo "Не удалось разобрать строки:" & vbNewLine & strErr
    Else
        WScript.Echo "Ошибка чтения вывода утилиты: " & Err.Number & vbNewLine & Err.Description
        Err.Clear
    End If
Else
    WScript.Echo "Ошибка запуска утилиты: " & Err.Number & vbNewLine & Err.Description
    Err.Clear
End If
Set objExec = Nothing
Set objWShell = Nothing
WScript.Quit 0


andr_mozg 14-03-2013 17:27 2111232

все ок.... пример у меня кривой.....


Время: 18:50.

Время: 18:50.
© OSzone.net 2001-