由于市场营销在版本控制方面有发言权,我怀疑你可以为所有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()调用的函数更好)。
ADDED/cf。评论)
模式 “^(\ d + \ d +)(*)$” 查找:
- ^字符串的开始
- (初开始捕获/组
- \ d +序列(1或多个)非数字
- \ d + digitis
- 的序列)结束第一捕获/组
- < - 看!一片空白!
- (开始第二捕获/组
- 。*(可能为空)字符除了vbLf
- 序列)结束第二捕捉/组串
的
我有一个批处理文件,这样做。我会建议看看PowerShell的最佳方式。 – Jeff