由於市場營銷在版本控制方面有發言權,我懷疑你可以爲所有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