【问题标题】:VBS to return part of a command line return with RegExVBS 使用 RegEx 返回命令行的一部分
【发布时间】:2011-12-17 18:52:05
【问题描述】:

我正在尝试通过 ssh 执行命令,只获取返回命令的第一部分,并将其设置为要使用的变量。我正在尝试使用 RegExp,因为我只需要前 4 位数字,所以我使用模式代码“^\d{1,4}”我可以通过此代码成功获得整个回报;

Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec ("ssh -un -pw command")
      Do Until oExec.StdOut.AtEndOfStream
         ID = oExec.StdOut.ReadLine
      Loop
       WScript.Echo ID

但是现在当我尝试使用 RegExp 和 echo 来查看我是否得到了我想要的结果时,我得到了一个“类型不匹配”错误

Set RegExp = New RegExp
Set WshShell = CreateObject("WScript.Shell")
Set oExec = WshShell.Exec ("ssh -un -pw command")
RegExp.Pattern = "^\d{1,4}"
      Do Until oExec.StdOut.AtEndOfStream
         ID = oExec.StdOut.ReadLine
          WScript.Echo RegExp.execute(ID)
      Loop

如果有人对代码有什么问题有任何煽动,请告诉我。如果您知道任何替代方案,我将不胜感激。使用 shell 脚本我可以得到我正在寻找的东西,但我需要用 windows 运行这个 VBS。如果有人可以将它翻译成 VBS,这里是 Shell 脚本。

.............for i in `command | sed ‘1d’ | awk ‘{print $1}’`..............

提前感谢任何帮助......我在这个问题上绞尽脑汁一段时间并且筋疲力尽。

【问题讨论】:

    标签: regex shell vbscript command


    【解决方案1】:

    您不能 .Echo 像从 .Execute 获得的匹配集合这样的对象;访问其第一项的 .Value:

    >> sInp = "1234xxx"
    >> Set reHead = New RegExp
    >> reHead.Pattern = "^\d{4}"
    >> Set oMTS = reHead.Execute(sInp)
    >> WScript.Echo oMTS(0).Value
    >>
    1234
    >> WScript.Echo oMTS
    >>
    Error Number:       13
    Error Description:  Type mismatch
    

    【讨论】:

    • Ooooooooooooooooooh 解释它...这正是我需要 Ekkeheard !我现在可以解析第一组数字并将其设置为带有 .Value 的变量...谢谢!!!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-11
    • 1970-01-01
    • 2013-01-22
    • 2019-12-24
    • 1970-01-01
    • 2018-08-04
    • 2015-08-17
    相关资源
    最近更新 更多