Submitted By: Matt Williams

This script contains a function that compares the version numbers of two different files and determines which version is newer. The script returns 0 if the file versions are the same, 1 if version 1 is greater, and 2 if version 2 is greater.

Visual Basic
Edit|Remove
'Coded by Matt Williams
'This Function compares 2 file versions and determines which version is newer
'This function returns 0 if they are the same, 1 if version1 is greater and 2 
'if version2 is greater.

'Example Usage
Result = VersionCompare ("10.9.0.1000.200", "10.0.0.300")
wscript.echo Result



'Version Compare Function
Function VersionCompare(Version1, Version2)

Counter = 0

' Use "." to delimit parts of version.
Array_1 = Split(Version1, ".")
Array_2 = Split(Version2, ".")

' Determine number of version parts.
Version1_Elems = UBound(Array_1)
Version2_Elems = UBound(Array_2)

'Determine which has the greatest number of elements.
If Version1_Elems = Version2_Elems Then
   Elements = "same"
   Numb_of_Elements = Version1_Elems
ElseIf Version1_Elems > Version2_Elems Then
   Elements = "Version1 Greater"
   Numb_of_Elements = Version2_Elems
ElseIf Version2_Elems > Version1_Elems Then
   Elements = "Version2 Greater"
   Numb_of_Elements = Version1_Elems
End If

Do While Counter < (Numb_of_Elements + 1)
      CurrentInstalledItem = CInt(Array_1(Counter))
      CurrentPSUItem = CInt(Array_2(Counter))

   If CurrentInstalledItem > CurrentPSUItem Then
      Highest_Version = "Version1"
      VersionCompare = 1
      Exit Do
   ElseIf CurrentInstalledItem < CurrentPSUItem Then
      Highest_Version = "Version2"
      VersionCompare = 2
      Exit Do
   ElseIf CurrentInstalledItem = CurrentPSUItem Then
      Highest_Version = "Same"
      VersionCompare = 0
   End If
   Counter = Counter + 1
Loop 

If Highest_Version = "Same" Then
   If Elements = "Version1 Greater" Then
      Do While Counter < (Version1_Elems + 1)
         If CInt(Array_1(Counter)) > 0 Then
         Highest_Version = "Version1"
         VersionCompare = 1
         End If
         Counter = Counter + 1
      Loop

   ElseIf Elements = "Version2 Greater" Then
      Do While Counter < (Version2_Elems + 1)
      If CInt(Array_2(Counter)) > 0 Then
         Highest_Version = "Version2"
         VersionCompare = 2
         End If
         Counter = Counter + 1
      Loop
   End If
End If

End Function