viper67 Posted June 10, 2005 Posted June 10, 2005 hallo. i like to compare 2 txt files, but it doesn't work. can anyone help me ? here's my script. ------------------------------- $file1 = FileOpen("test.txt", 0) $file2 = FileOpen("test2.txt", 0) ; Check if file opened for reading OK If $file1 = -1 Then MsgBox(0, "Error", "File1 kann nicht geöffnet werden.") Exit EndIf If $file2 = -1 Then MsgBox(0, "Error", "File2 kann nicht geöffnet werden.") Exit EndIf ; Read in 1 character at a time until the EOF is reached While 1 $chars1 = FileRead($file1, 1000000) If @error = -1 Then ExitLoop MsgBox(0, "Inhalt 1:", $chars1) $chars2 = FileRead($file2, 1000000) If @error = -1 Then ExitLoop MsgBox(0, "Inhalt 2:", $chars2) Wend If ($chars1 = $chars2) Then MSgBox (0, "Vergleich", "Der Text hat sich nicht geändert.") Else MSgBox (0, "Vergleich", "Der Text hat sich geändert.") EndIf FileClose($file1) FileClose($file2) ------------------------------- Thanx for your support viper67
Andre Posted June 10, 2005 Posted June 10, 2005 why not use FC ? Andre What about Windows without using AutoIt ?It would be the same as driving a car without an steering Wheel!
w0uter Posted June 10, 2005 Posted June 10, 2005 the dos command COMP. My UDF's:;mem stuff_Mem;ftp stuff_FTP ( OLD );inet stuff_INetGetSource ( OLD )_INetGetImage _INetBrowse ( Collection )_EncodeUrl_NetStat_Google;random stuff_iPixelSearch_DiceRoll
JSThePatriot Posted June 10, 2005 Posted June 10, 2005 Okay you are wanting to see if the contents are exactly the same as in character per character. Then what I would do is the following.I just created a UDF that will compare files. I hope to get it included in the next release of AutoIt. Let me know how it works for you. You can also view it and any changes that may be made to it at _FileCompare($file1, $file2)The code:expandcollapse popupFunc _FileCompare($file1 = "", $file2 = "") Local $file1, $file2;Files/Paths Local $o_file1, $o_file2;Open file handles Local $chars1, $chars2;Number of Chars in file according to number (ex. $chars1 holds #chars in $file1) Local $chars;Initial variable for each character count. ;Checks to be sure that both files were set parameters. If $file1 = "" OR $file2 = "" Then SetError(1) Return -1 EndIf ;Assumes if the path isnt provided it is in the script directory. If Not(StringInStr($file1, "\")) Then $file1 = @ScriptDir & "\" & $file1 EndIf ;Assumes if the path isnt provided it is in the script directory. If Not(StringInStr($file2, "\")) Then $file2 = @ScriptDir & "\" & $file2 EndIf ;Open file and check to be sure it opened. $o_file1 = FileOpen($file1, 0) If $o_file1 = -1 Then MsgBox(0, "Unable to Open File", "Unable to open file: " & $file1) SetError(1) Return -1 EndIf ;Open file and check to be sure it opened. $o_file2 = FileOpen($file2, 0) If $o_file2 = -1 Then MsgBox(0, "Unable to Open File", "Unable to open file: " & $file2) SetError(1) Return -1 EndIf ;Go through the file and read the whole thing into a variable While 1 $chars = FileRead($o_file1, 1) If @error = -1 Then ExitLoop $chars1 = $chars1 & $chars WEnd ;Go through the file and read the whole thing into a variable While 1 $chars = FileRead($o_file2, 1) If @error = -1 Then ExitLoop $chars2 = $chars2 & $chars WEnd FileClose($o_file1) FileClose($o_file2) If ($chars1 == $chars2) Then Return 1 Else Return -1 EndIf EndFuncAn example of how to use it.$file1 = "swfout.txt" $file2 = "C:\swfout.txt" If _FileCompare($file1, $file2) Then ;do something here EndIf MsgBox(0, "Compare Files", "On success it will return 1 it returned: " & _FileCompare($file1, $file2))I hope this helps you out.JS AutoIt Links File-String Hash Plugin Updated! 04-02-2008 Plugins have been discontinued. I just found out. ComputerGetInfo UDF's Updated! 11-23-2006 External Links Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)
Groumphy Posted June 11, 2005 Posted June 11, 2005 Small question: I carried out the function and despite everything I still have a return -1... The files are existing and different. Why ? ----------------------GroumphyMore information about me [Fr]
viper67 Posted June 11, 2005 Author Posted June 11, 2005 Hallo JSThePatriotThats it. It works Thanx for your help.viper67Okay you are wanting to see if the contents are exactly the same as in character per character. Then what I would do is the following.I just created a UDF that will compare files. I hope to get it included in the next release of AutoIt. Let me know how it works for you. You can also view it and any changes that may be made to it at _FileCompare($file1, $file2)The code:expandcollapse popupFunc _FileCompare($file1 = "", $file2 = "") Local $file1, $file2;Files/Paths Local $o_file1, $o_file2;Open file handles Local $chars1, $chars2;Number of Chars in file according to number (ex. $chars1 holds #chars in $file1) Local $chars;Initial variable for each character count. ;Checks to be sure that both files were set parameters. If $file1 = "" OR $file2 = "" Then SetError(1) Return -1 EndIf ;Assumes if the path isnt provided it is in the script directory. If Not(StringInStr($file1, "\")) Then $file1 = @ScriptDir & "\" & $file1 EndIf ;Assumes if the path isnt provided it is in the script directory. If Not(StringInStr($file2, "\")) Then $file2 = @ScriptDir & "\" & $file2 EndIf ;Open file and check to be sure it opened. $o_file1 = FileOpen($file1, 0) If $o_file1 = -1 Then MsgBox(0, "Unable to Open File", "Unable to open file: " & $file1) SetError(1) Return -1 EndIf ;Open file and check to be sure it opened. $o_file2 = FileOpen($file2, 0) If $o_file2 = -1 Then MsgBox(0, "Unable to Open File", "Unable to open file: " & $file2) SetError(1) Return -1 EndIf ;Go through the file and read the whole thing into a variable While 1 $chars = FileRead($o_file1, 1) If @error = -1 Then ExitLoop $chars1 = $chars1 & $chars WEnd ;Go through the file and read the whole thing into a variable While 1 $chars = FileRead($o_file2, 1) If @error = -1 Then ExitLoop $chars2 = $chars2 & $chars WEnd FileClose($o_file1) FileClose($o_file2) If ($chars1 == $chars2) Then Return 1 Else Return -1 EndIf EndFuncAn example of how to use it.$file1 = "swfout.txt" $file2 = "C:\swfout.txt" If _FileCompare($file1, $file2) Then ;do something here EndIf MsgBox(0, "Compare Files", "On success it will return 1 it returned: " & _FileCompare($file1, $file2))I hope this helps you out.JS<{POST_SNAPBACK}>
JSThePatriot Posted June 11, 2005 Posted June 11, 2005 Small question: I carried out the function and despite everything I still have a return -1... The files are existing and different. Why ?<{POST_SNAPBACK}>Could you show me the code you are using to call the function? I will see if I can debug it. Are you sure the files are the exact same char by char?JS AutoIt Links File-String Hash Plugin Updated! 04-02-2008 Plugins have been discontinued. I just found out. ComputerGetInfo UDF's Updated! 11-23-2006 External Links Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)
JSThePatriot Posted June 11, 2005 Posted June 11, 2005 Hallo JSThePatriotThats it. It works Thanx for your help.viper67<{POST_SNAPBACK}>I am glad I was able to help. In the scripts and scraps section I am soon going to add the functionality of comparing by size and such.JS AutoIt Links File-String Hash Plugin Updated! 04-02-2008 Plugins have been discontinued. I just found out. ComputerGetInfo UDF's Updated! 11-23-2006 External Links Vortex Revolutions Engineer / Inventor (Web, Desktop, and Mobile Applications, Hardware Gizmos, Consulting, and more)
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now