FileCheckMD5

Submit portable freeware that you find here. It helps if you include information like description, extraction instruction, Unicode support, whether it writes to the registry, and so on.
Post Reply
Message
Author
User avatar
webfork
Posts: 10821
Joined: Wed Apr 11, 2007 8:06 pm
Location: US, Texas
Contact:

FileCheckMD5

#1 Post by webfork »

http://www.brandonstaggs.com/filecheckmd5.html

Allows you to create hashes of hundreds or thousands of files in multiple directories and then automatically check them for defects later. I use it to check AND catalog my music collection as well as my most important system CDs.

- - -

I tried running this with API Guard and it seemed pretty self-contained but I'd obviously like someone else to check it. Anybody check it out and let me know? Or suggest an alternative program?

I tried this with the only other freeware program I've found like it MD5summer, which is NOT portable, and I found later to be very buggy.

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#2 Post by guinness »

Tested ExactFile: Not Portable
Wrote settings to HKCU\Software\ExactFile. But it is a useful program that can be run Portable, but settings will be left behind in the Registry.
Download: http://www.exactfile.com/

Tested FileCheckMD5: Portable
Details on why the program was created [ExactFile.com] Worth submitting because it creates a MD5 Checksum File which can be opened with TeraCopy and then checks the integrity of the files on a CD-ROM (for example.)
Download: http://www.exactfile.com/downloads/

User avatar
webfork
Posts: 10821
Joined: Wed Apr 11, 2007 8:06 pm
Location: US, Texas
Contact:

Re: FileCheckMD5

#3 Post by webfork »

From the site: http://www.exactfile.com/downloads/

> FileCheckMD5 - THIS IS OBSOLETE. ExactFile does everything you’d want FileCheckMD5 to do and more, plus ExactFile fixes a bunch of bugs that will never be fixed in FileCheckMD5.

Also, the software is listed as "alpha" so I'm guessing we shouldn't add to the database. Bummer.

Also on the ExactFile page (http://www.exactfile.com/using-exactfile/), someone already brought up the fact that there's no portable version so I'll probably skip contacting the author.

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#4 Post by guinness »

I just realised DVDsig does exactly the same job as FileCheckMD5, but with an application the size of only 10KB.

User avatar
dmg
Posts: 325
Joined: Fri Jun 04, 2010 2:11 am
Contact:

Re: FileCheckMD5

#5 Post by dmg »

DVDsig is a nifty little program. The only drawback is that the .md5 file it generates is not organized so as to be easy to read. I have wondered why there are so few hash apps capable of scanning recursively. :|

User avatar
webfork
Posts: 10821
Joined: Wed Apr 11, 2007 8:06 pm
Location: US, Texas
Contact:

Re: FileCheckMD5

#6 Post by webfork »

dmg wrote:DVDsig is a nifty little program. The only drawback is that the .md5 file it generates is not organized so as to be easy to read. I have wondered why there are so few hash apps capable of scanning recursively. :|
This has been my beef for a while now.

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#7 Post by guinness »

Also another problem with DVDsig is the MD5 file produced by FileCheckMD5 works with TeraCopy, but the DVDsig MD5 file doesn't work at all. I think it's because the delimiter used with FileCheckMD5 is "|" and "," in DVDsig.

If you open the .md5 file with Notepad you can see the contents of the file.

User avatar
dmg
Posts: 325
Joined: Fri Jun 04, 2010 2:11 am
Contact:

Re: FileCheckMD5

#8 Post by dmg »

The files also place the file name and hash in opposite order. I am looking at a way to convert the DVDsig file. I will let you know. 8)

User avatar
dmg
Posts: 325
Joined: Fri Jun 04, 2010 2:11 am
Contact:

Re: FileCheckMD5

#9 Post by dmg »

yes! The DVDsig file can be converted with a simple keyboard macro. I created one in TinyTask because it was faster, but it can be done in AutoHotKey. The one I made is functional but clumsy. I am sure an AutoHotKey version would be better. Now, the real question is does anyone have a use for such a thing.... :lol:

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#10 Post by guinness »

I was going to create a converter for the .md5 file in AutoIt, if those are interested I can post the code here.

User avatar
dmg
Posts: 325
Joined: Fri Jun 04, 2010 2:11 am
Contact:

Re: FileCheckMD5

#11 Post by dmg »

I do not use TeraCopy so I don't really have a use for the script, but I would be interested in seeing the code. I dabble a little in AHK but have never looked at Autoit.

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#12 Post by guinness »

Here is the AutoIt code for converting a dvdsig.md5 to a TeraCopy and filecheckmd5.md5 compatible file. This a proof of concept and hopefully helpful if you want to learn how to use AutoIt. Any enhancements post below.

Code: Select all

#include <File.au3>

$File = FileOpenDialog("Simple DVDSig Converter", @HomeDrive, "MD5 (*.md5)")
If Not @error Then
	If _Convert($File) = 1 Then
		MsgBox(64, "Simple DVDSig Converter", "Complete.")
		Exit
	Else
		MsgBox(16, "Simple DVDSig Converter", "Error, unexpected problem occurred." & @CRLF & @CRLF & "Try again!")
		Exit
	EndIf
EndIf

Func _Convert($cFile)
	Local $TempArray[1], $Temp_FileList[1][2]
	_FileReadToArray($cFile, $TempArray)
	If Not @error Then
		ReDim $Temp_FileList[$TempArray[0] + 1][2]
		For $A = 1 To $TempArray[0]
			; ConsoleWrite($TempArray[$A] & @CRLF) ; TESTING: To see what filename is being split.
			$Temp_FileList_Two = StringSplit($TempArray[$A], ",")
			If @error Then
				MsgBox(16, "Simple DVDSig Converter", "Error, incorrect MD5 file has been chosen." & @CRLF & @CRLF & "Ideally the filename should be called dvdsig.md5")
				Exit
			EndIf
			For $B = 1 To $Temp_FileList_Two[0]
				$Temp_FileList[$A][$B - 1] = $Temp_FileList_Two[$B] ; 2D Array splitting Filename & MD5 checksum into 2 columns
			Next
			$Temp_FileList[0][0] += 1
		Next
		; _ArrayDisplay($Temp_FileList, "Split into two columns") ; Displays the two columns of both filename & MD5 checksum. Requires #include <Array.au3>
		For $A = 1 To $Temp_FileList[0][0]
			$TempArray[$A] = $Temp_FileList[$A][1] & "|" & $Temp_FileList[$A][0] ; 1D Array combining MD5 checksum & Filename
			$TempArray[0] += 1
		Next
		_FileWriteFromArray(StringRegExpReplace($cFile, "^.*\\|\..*$", "") & "_NEW.md5", $TempArray, 1) ; Writing Array to a new MD5 file using select file + _NEW prefix
		Return 1
	ElseIf @error Then
		Return 0
	EndIf
EndFunc   ;==>_Convert
Update: Rearrange some of the code to be a little more efficient!
Last edited by guinness on Thu Jul 29, 2010 10:10 am, edited 2 times in total.

User avatar
dmg
Posts: 325
Joined: Fri Jun 04, 2010 2:11 am
Contact:

Re: FileCheckMD5

#13 Post by dmg »

Wow! Thanks for posting the script. I think am going to have to do a lot of reading up on Autoit before I will be able to understand any of this. :shock:

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#14 Post by guinness »

dmg wrote:Wow! Thanks for posting the script. I think am going to have to do a lot of reading up on Autoit before I will be able to understand any of this. :shock:
You're welcome! The code is very easy once you understand the basics of AutoIt. In my opinion AutoHotKey seems a little clumsy and not as self explanatory as AutoIt! But each to their own I suppose.

User avatar
guinness
Posts: 4118
Joined: Mon Aug 27, 2007 2:00 am
Contact:

Re: FileCheckMD5

#15 Post by guinness »

I updated the script which converts a DVDSig file to a compatible TeraCopy/FileCheckMD5 file. For those learning AutoIt, this is a great way to learn how to code, as it uses 1D/2D Arrays & error checking (It's a simple script!)

Note: I have added into this script a way to reverse the process of conversion, i.e. if you wish to convert back to a DVDSig compatible file from a TeraCopy/FileCheckMD5 file, simply change the _Convert_MD5Sig(FileOpenDialog("Open DVDSig MD5 File", @HomeDrive, "MD5 (*.md5)"), ",", "|") to _Convert_MD5Sig(FileOpenDialog("Open TeraCopy/FileCheckMD5 MD5 File", @HomeDrive, "MD5 (*.md5)"), "|", ",") (it's only swapping ',' and '|' the other way around!)

Hopefully the AutoHotKey users on TPFC will have fun learning this! :)

Code: Select all

; #FUNCTION# =========================================================================================================
; Name...........: MD5Sig Converter or TeraCopy/FileCheckMD5 Converter
; Description ...: Converts a dvdsig.md5 to a TeraCopy and filecheckmd5.md5 compatible file or vice versa.
; Syntax.........: _Convert_MD5Sig($MD5Sig_File, [$Delimiter_Input = ",", [$Delimiter_Output = "|"]])
; Parameters ....: $MD5Sig_File - .MD5 that is to be converted.
;                  $Delimiter_Input - [Optional] The delimiter of the input file which splits the MD5 string and filename. (Default = ",")
;                  $Delimiter_Output - [Optional] The delimiter of the ouput file which splits the MD5 string and filename. (Default = "|")
; Requirement(s).: v3.0.102 or higher
; Return values .: Success - Converts the .MD5 to a compatible format.
;                  Failure - Displays a MsgBox() warning outlining the reason for failure.
; Author ........: guinness
; Example........; Yes
; Warning........; None
;=====================================================================================================================

#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
;~     MD5Sig Converter Created By:            guinness
;~     Last Textual Changes In This Script:    25th September 2010
;~     The Program Can Be Run By Selecting:    <MD5Sig Converter.exe>

;~     Thanks To The Following...

;~     Icon -->
;~     Help -->

#NoTrayIcon

#AutoIt3Wrapper_Outfile=MD5Sig Converter.exe
#AutoIt3Wrapper_UseUpx=Y
#AutoIt3Wrapper_Res_Description=MD5Sig Converter
#AutoIt3Wrapper_Res_Fileversion=0.0.0.1
#AutoIt3Wrapper_Res_LegalCopyright=
#AutoIt3Wrapper_Res_Language=2057
#AutoIt3Wrapper_Res_Field=Website|
#AutoIt3Wrapper_Res_Field=E-Mail|comment at the website
#AutoIt3Wrapper_UseX64=N
#AutoIt3Wrapper_Run_Obfuscator=Y
#Obfuscator_Parameters=/SF /SV /OM /CS=0 /CN=0

#include <File.au3>

_Main()

; If you call the Function _Convert_MD5Sig(FileOpenDialog("Open TeraCopy/FileCheckMD5 MD5 File", @HomeDrive, "MD5 (*.md5)"), "|", ",") this will convert to DVDSig compatible MD5 file.

Func _Main()
    Switch _Convert_MD5Sig(FileOpenDialog("Open DVDSig MD5 File", @HomeDrive, "MD5 (*.md5)"), ",", "|")
        Case 1
            MsgBox(64, "MD5Sig Converter", "Completed conversion.")
        Case 0
            If @extended = 1 Then
                MsgBox(16, "MD5Sig Converter", "Error, unexpected problem occurred." & @CRLF & @CRLF & "Please try again.")
            Else
                MsgBox(16, "MD5Sig Converter", "Error, incorrect MD5 file has been chosen." & @CRLF & @CRLF & 'Ideally the filename should be called "dvdsig.md5"')
            EndIf
    EndSwitch
    Exit
EndFunc   ;==>_Main

Func _Convert_MD5Sig($MD5Sig_File, $Delimiter_Input = ",", $Delimiter_Output = "|")
    Local $_FileReadToArray
    _FileReadToArray($MD5Sig_File, $_FileReadToArray)

    If Not @error Then
        Local $TEMP_FileReadToArray[$_FileReadToArray[0] + 1][2]
        For $A = 1 To $_FileReadToArray[0] ; Read each Array Value and StringSplit using ',' or '|' as the delimiter into 2 columns. (2D Array)
            Local $StringSplit = StringSplit($_FileReadToArray[$A], $Delimiter_Input)
            If @error Then Return SetError(1, 2, 0)
            For $B = 1 To $StringSplit[0]
                $TEMP_FileReadToArray[$A][$B - 1] = $StringSplit[$B]
            Next
            $TEMP_FileReadToArray[0][0] += 1
        Next

        For $A = 1 To $TEMP_FileReadToArray[0][0] ; Combine the StringSplit elements (Column 2 | 1) to MD5 '|' or ',' FileName. (1D Array)
            $_FileReadToArray[$A] = $TEMP_FileReadToArray[$A][1] & $Delimiter_Output & $TEMP_FileReadToArray[$A][0]
            $_FileReadToArray[0] += 1
        Next

        Local $MD5Sig_FileConverted = StringRegExpReplace($MD5Sig_File, "^.*\\|\..*$", "") & "_Converted.md5"
        If FileExists(@ScriptDir & "\" & $MD5Sig_FileConverted) Then FileDelete(@ScriptDir & "\" & $MD5Sig_FileConverted) ; Delete old file if it exists.
        _FileWriteFromArray(@ScriptDir & "\" & $MD5Sig_FileConverted, $_FileReadToArray, 1) ; Writing to a new .MD5 file using selected file + _Converted prefix.
        Return 1
    ElseIf @error Then
        Return SetError(1, 1, 0)
    EndIf
EndFunc   ;==>_Convert_MD5Sig

Func __DVDSig_File() ; Call this Function if you wish to create a 'Fake' MD5 file.
    Local $TEMP_FileReadToArray[100001]
    For $A = 1 To 100000
        $TEMP_FileReadToArray[$A] = "Test_Text,01234567890123456789"
        $TEMP_FileReadToArray[0] += 1
    Next
    _FileWriteFromArray("Test.md5", $TEMP_FileReadToArray, 1)
    Return 1
EndFunc   ;==>__DVDSig_File

Post Reply