3 ' TortoiseSVN Diff script for binary files
5 ' Copyright (C) 2010-2014 the TortoiseSVN team
6 ' This file is distributed under the same license as TortoiseSVN
15 ' Hans-Emil Skogh, 2011
17 dim objArgs
, objFileSystem
, sBaseVer
, sNewVer
, sMessage
, sBaseMessage
, sNewMessage
, bDiffers
21 Set objArgs
= WScript
.Arguments
24 MsgBox
"Usage: [CScript | WScript] diff-dll.vbs base.[dll|exe] new.[dll|exe]", vbCritical
, "Invalid arguments"
28 sBaseFile
= objArgs(0)
31 Set objFileSystem
= CreateObject("Scripting.FileSystemObject")
32 If objFileSystem
.FileExists(sBaseFile
) = False Then
33 MsgBox
"File " + sBaseFile
+ " does not exist. Cannot compare the files.", vbCritical
, "File not found"
36 If objFileSystem
.FileExists(sNewFile
) = False Then
37 MsgBox
"File " + sNewFile
+ " does not exist. Cannot compare the files.", vbCritical
, "File not found"
42 dim fBaseFile
, fNewFile
43 Set fBaseFile
= objFileSystem
.GetFile(sBaseFile
)
44 Set fNewFile
= objFileSystem
.GetFile(sNewFile
)
46 If fBaseFile
.size
<> fNewFile
.size
Then
48 sBaseMessage
= sBaseMessage
+ " Size: " + CStr(fBaseFile
.Size
) + " bytes" + vbCrLf
49 sNewMessage
= sNewMessage
+ " Size: " + CStr(fNewFile
.Size
) + " bytes" + vbCrLf
51 sMessage
= sMessage
+ "File sizes: " + CStr(fNewFile
.Size
) + " bytes" + vbCrLf
54 ' Compare files using fc.exe
55 If bDiffers
= False Then
56 Set WshShell
= WScript
.CreateObject("WScript.Shell")
57 exitStatus
= WshShell
.Run("fc.exe """ + sBaseFile
+ """ """ + sNewFile
+ """", 0, True)
58 If exitStatus
= 1 Then
60 sMessage
= sMessage
+ "File content differs!" + vbCrLf
61 ElseIf exitStatus
> 1 Then
66 ' Only compare versions if we are comparing exe:s or dll:s
67 If LCase(Right(sBaseFile
, 3)) = "exe" or LCase(Right(sNewFile
, 3)) = "exe" or _
68 LCase(Right(sBaseFile
, 3)) = "dll" or LCase(Right(sNewFile
, 3)) = "dll" Then
71 sBaseVer
= objFileSystem
.GetFileVersion(sBaseFile
)
72 sNewVer
= objFileSystem
.GetFileVersion(sNewFile
)
74 If Len(sBaseVer
) = 0 and Len(sNewVer
) = 0 Then
75 sMessage
= sMessage
+ "No version information available."
76 ElseIf sBaseVer
= sNewVer
Then
77 sMessage
= sMessage
+ "Version: " + sBaseVer
79 sBaseMessage
= sBaseMessage
+ " Version: " + sBaseVer
+ vbCrLf
80 sNewMessage
= sNewMessage
+ " Version: " + sNewVer
+ vbCrLf
84 ' Generate result message
85 sBaseMessage
= "Base" + vbCrLf _
86 + " File: " + sBaseFile
+ vbCrLf _
88 sNewMessage
= + "New" + vbCrLf _
89 + " File: " + sNewFile
+ vbCrLf _
92 If bDiffers
= True Then
93 sMessage
= "Files differ!" + vbCrLf _
95 + sBaseMessage
+ vbCrLf _
96 + sNewMessage
+ vbCrLf _
99 MsgBox sMessage
, vbExclamation
, "File Comparison - Differs"
101 sMessage
= "Files are identical" + vbCrLf _
105 MsgBox sMessage
, vbInformation
, "File Comparison - Identical"