以下の
===
dim path
path="C:\Windows\System32....."
MsgBox GetVersion(path)
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
こんな感じでいかがでしょうか。
VBS
1dim path 2path="C:\Windows\System32\drivers\srv.sys" 3MsgBox GetVersion(path, "6.1.7601.23889") 4 5Function GetVersion(pathspec, basever) 6 Dim fso, temp 7 Set fso = CreateObject("Scripting.FileSystemObject") 8 temp = fso.GetFileVersion(pathspec) 9 10 ' バージョン情報なし 11 If Len(temp) = 0 Then 12 GetVersion = "バージョン情報がありません。" 13 Exit Function 14 End If 15 16 ' 分割して桁を揃えるように文字列化 17 v1 = Split(basever, ".") 18 v2 = Split(temp, ".") 19 v1str = Right("00" & v1(0), 2) & Right("00" & v1(1), 2) & Right("0000" & v1(2), 4) & Right("00000" & v1(3), 5) 20 v2str = Right("00" & v2(0), 2) & Right("00" & v2(1), 2) & Right("0000" & v2(2), 4) & Right("00000" & v2(3), 5) 21 22 ' 文字列化したバージョン同士で比較 23 If v1str <= v2str Then 24 GetVersion = "問題ありません。" 25 Else 26 GetVersion = "○○を適用してください。" 27 End If 28 29End Function
解説
試したところ、取得できたバージョン情報は6.1.7601.23889
のような値でした。
各桁数が環境によって揃っているとは限らないので、単純な比較はできません。
そこで一旦ドット単位で分割した後、桁を揃えるように文字列化しています。
つまり6.1.7601.23889
でも1.1.1.1
でも以下のような文字列になります。
06.01.7601.23889
01.01.0001.00001
こうすることで単純にIf文で比較ができるようになります。
各桁数は現状固定で、2,2,4,5 としてありますので、もし不都合があるようなら適宜修正してください。
投稿2017/10/11 04:45
総合スコア16998
0
以下参考に。
Hey, Scripting Guy! インストール済みのデバイス ドライバのリストを取得する方法はありますか
ビデオコントローラのドライバを取得する: Win32_VideoController - WMI Sample (VBS)
※どのドライバーを取得するかは.ExecQuery("Select * from XXXX")
のXXXXで指定するようです。
また、ドライバーのバージョン自体は文字列だと思われるので以下のように分割して比較する必要があるかもしれません。
VBS
1for i=1 to Ubound(split(oObj.DriverVersion,".")) 2 if split(oObj.DriverVersion,".")(i) ="XXXX" then 3next
投稿2017/10/11 04:56
総合スコア25195
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2017/10/13 02:57