我需要检索操作系统名称,例如“Windows 2003”,然后检索操作系统版本,这将是“服务器标准版”。
我有这个脚本
Set colItems = objWMISrvc.ExecQuery("SELECT * FROM Win32_OperatingSystem"
For Each objOperatingSystem in colItems
strOSName = objOperatingSystem.Caption
Next
这使strOSName成为“Windows 2003 Server Standard Edition”或我在“Microsoft Windows 7 Professional”中开发的系统。
我有办法将这两个方面分开吗?如果这是有道理的......
答案 0 :(得分:2)
由于营销在版本控制方面有发言权,我怀疑你能为所有Windows版本找到一个普遍适用的策略。对于给出的示例,我将从RegExp开始:
Option Explicit
Function qq(s) : qq = """" & s & """" : End Function
Dim aVers : aVers = Array( _
"Windows 2003 Server Standard Edition" _
, "Microsoft Windows 7 Professional" _
)
Dim reVers : Set reVers = New RegExp
reVers.Pattern = "^(\D+\d+) (.*)$"
Dim sVers
For Each sVers In aVers
Dim oMTS : Set oMTS = reVers.Execute(sVers)
WScript.Echo Join(Array( _
qq(sVers), qq(oMTS(0).SubMatches(0)), qq(oMTS(0).SubMatches(1)) _
), vbCrLf)
Next
输出:
"Windows 2003 Server Standard Edition"
"Windows 2003"
"Server Standard Edition"
"Microsoft Windows 7 Professional"
"Microsoft Windows 7"
"Professional"
处理例如“Microsoft Windows XP [版本5.1.2600]”你必须修改模式(但是自定义RegExp模式比修改包含大量InStr()和Mid()调用的函数更好。
已添加 / cf。评语)
模式“^(\ D + \ d +)(。*)$”查找: