Synced diff-scripts with TortoiseSVN
[TortoiseGit.git] / contrib / diff-scripts / diff-dll.vbs
blob3bda80926cc9dadc7751ac9b0fa221728f7e56c8
1 ' extensions: dll;exe
3 ' TortoiseSVN Diff script for binary files
5 ' Copyright (C) 2010 the TortoiseSVN team
6 ' This file is distributed under the same license as TortoiseSVN
8 ' Last commit by:
9 ' $Author$
10 ' $Date$
11 ' $Rev$
13 ' Authors:
14 ' Casey Barton, 2010
15 ' Hans-Emil Skogh, 2011
17 dim objArgs, objFileSystem, sBaseVer, sNewVer, sMessage, sBaseMessage, sNewMessage, bDiffers
19 bDiffers = False
21 Set objArgs = WScript.Arguments
22 num = objArgs.Count
23 if num < 2 then
24 MsgBox "Usage: [CScript | WScript] compare.vbs base.doc new.doc", vbCritical, "Invalid arguments"
25 WScript.Quit 1
26 end if
28 sBaseDoc = objArgs(0)
29 sNewDoc = objArgs(1)
31 Set objFileSystem = CreateObject("Scripting.FileSystemObject")
32 If objFileSystem.FileExists(sBaseDoc) = False Then
33 MsgBox "File " + sBaseDoc +" does not exist. Cannot compare the files.", vbCritical, "File not found"
34 Wscript.Quit 1
35 End If
36 If objFileSystem.FileExists(sNewDoc) = False Then
37 MsgBox "File " + sNewDoc +" does not exist. Cannot compare the files.", vbCritical, "File not found"
38 Wscript.Quit 1
39 End If
41 ' Compare file size
42 dim fBaseFile, fNewFile
43 Set fBaseFile = objFileSystem.GetFile(sBaseDoc)
44 Set fNewFile = objFileSystem.GetFile(sNewDoc)
46 If fBaseFile.size <> fNewFile.size Then
47 bDiffers = True
48 sBaseMessage = sBaseMessage + " Size: " + CStr(fBaseFile.Size) + " bytes" + vbCrLf
49 sNewMessage = sNewMessage + " Size: " + CStr(fNewFile.Size) + " bytes" + vbCrLf
50 Else
51 sMessage = sMessage + "File sizes: " + CStr(fNewFile.Size) + " bytes" + vbCrLf
52 End If
54 ' Compare files using fc.exe
55 If bDiffers = False Then
56 Set WshShell = WScript.CreateObject("WScript.Shell")
57 exitStatus = WshShell.Run("fc.exe "+sBaseDoc+" "+sNewDoc, 0, True)
58 If exitStatus = 1 Then
59 bDiffers = True
60 sMessage = sMessage + "File content differs!" + vbCrLf
61 ElseIf exitStatus > 1 Then
62 ' Todo: Handle error!
63 End If
64 End If
66 ' Only compare versions if we are comparing exe:s or dll:s
67 If LCase(Right(sBaseDoc, 3)) = "exe" or LCase(Right(sNewDoc, 3)) = "exe" or _
68 LCase(Right(sBaseDoc, 3)) = "dll" or LCase(Right(sNewDoc, 3)) = "dll" Then
70 ' Compare version
71 sBaseVer = objFileSystem.GetFileVersion(sBaseDoc)
72 sNewVer = objFileSystem.GetFileVersion(sNewDoc)
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
78 Else
79 sBaseMessage = sBaseMessage + " Version: " + sBaseVer + vbCrLf
80 sNewMessage = sNewMessage + " Version: " + sNewVer + vbCrLf
81 End If
82 End If
84 ' Generate result message
85 sBaseMessage = "Base" + vbCrLf _
86 + " File: " + sBaseDoc + vbCrLf _
87 + sBaseMessage
88 sNewMessage = + "New" + vbCrLf _
89 + " File: " + sNewDoc + vbCrLf _
90 + sNewMessage
92 If bDiffers = True Then
93 sMessage = "Files differ!" + vbCrLf _
94 + vbCrLf _
95 + sBaseMessage + vbCrLf _
96 + sNewMessage + vbCrLf _
97 + sMessage
99 MsgBox sMessage, vbExclamation, "File Comparison - Differs"
100 Else
101 sMessage = "Files are identical" + vbCrLf _
102 + vbCrLf _
103 + sMessage
105 MsgBox sMessage, vbInformation, "File Comparison - Identical"
106 End If
108 Wscript.Quit