1

我需要一个命令来显示在 vbs 中执行 cmd 参数的结果。我的代码为

    <script language="VBScript" type="text/vbscript">
    set objShell = CreateObject("WScript.Shell")
    strOut=""
    sub start
    cmdarg="%comspec% /c netsh wlan show hosted " 
    set objExCmd = objShell.Exec(cmdarg)
    strOut=objExCmd.StdOut.ReadAll
    Set regEx = New RegExp
    regEx.Pattern = "[\f\n\r\v]+"
    regEx.Global = True
    regEx.Multiline = True
    strOut = regEx.Replace(strOut, "<br>")
    TraceOut.innerHTML= strOut
    end sub
    </script>

这列出了执行后的所有输出,如下所示:

托管网络设置

Mode                   : Allowed
SSID name              : "MyWiFi"
Max number of clients  : 10
Authentication         : WPA2-Personal
Cipher                 : CCMP

托管网络状态

Status                 : Not started

我只需要显示 SSID 名称。即,“MyWiFi”每当我更改 ssid 名称时它都会更改。所以它并不总是“MyWiFi”

这是完整的 HTA 程序

    <head><title>Hosted Network</title>
    <HTA:APPLICATION ID="oHTA";
      APPLICATIONNAME="Hosted Network";
      BORDER="thin";
      BORDERSTYLE="normal";
      SINGLEINSTANCE="no";
    >
    </head><body bgcolor="#E8E8E8" >
    <script language="VBScript" type="text/vbscript">
    sub subfn
    set objShell = CreateObject("WScript.Shell")
    cmdarg="%comspec% /c netsh wlan show hosted"
    set strOut = objShell.Exec(cmdarg)
    Dim re : Set re = New RegExp
    re.Multiline = True
    re.Pattern   = "^SSID\s+name\s+:\s+""([^""]+)"""
    strOut = "SSID: >" & re.Execute(strOut)(0).Submatches(0) & "<"
    TraceOut.innerHTML= strOut
    end sub
    </script>
    <input type="Button" name="B1" value="Find"  onclick="subfn">
    <div id=TraceOut></div></body> 
    </html>
4

1 回答 1

1

使用带有捕获/组/子匹配的正则表达式从 netsh 输出中删除所需的信息:

  Dim strOut : strOut = Join(Array( _
      "Mode                   : Allowed" _
    , "SSID name              : ""MyWiFi""" _
    , "Max number of clients  : 10" _
  ), vbCrLf)
  WScript.Echo strOut
  Dim re : Set re = New RegExp
  re.Multiline = True
  re.Pattern   = "^SSID\s+name\s+:\s+""([^""]+)"""
  WScript.Echo "SSID: >" & re.Execute(strOut)(0).Submatches(0) & "<"

输出:

Mode                   : Allowed
SSID name              : "MyWiFi"
Max number of clients  : 10
SSID: >MyWiFi<

(但我看不出“排序”是您问题的一部分)

于 2013-08-31T08:13:29.723 回答