vivec45 Posted November 4, 2011 Share Posted November 4, 2011 (edited) MsgBox(0, "File comparison", CmpFileAge("C:\f1.txt", "C:\f2.txt")) Func CmpFileAge($FilePath, $FilePath2) $t = FileGetTime($FilePath) $t1 = FileGetTime($FilePath2) If Not @error Then If $t[0] < $t1[0] And $t[1] < $t1[1] And $t[2] < $t2[2] And $t[3] < $t2[3] And $t[4] < $t2[4] And $t[5] < $t2[5] Then return "f1" Else return "f2" EndIf EndIf EndFunc This is my first attempt at checking which file was last modified. I just want to know if theres a function I can use for this before I try to write something custom. All I need out of this is which file was last modified. Currently the script returns "f2" regardless of which was actually last modified. I haven't thought too deeply about the way I'm doing it, like I said I want to know if there's a function for this already. Thanks. Edited November 4, 2011 by vivec45 Link to comment Share on other sites More sharing options...
JohnOne Posted November 4, 2011 Share Posted November 4, 2011 I don't know where $t2 Comes from. Try this, should return true if $FilePath Is newer than $FilePath2 If Not @error Then Return ($t[0] + $t[1] + $t[2] + $t[3] + $t[4] + $t[5]) > ($t1[0] + $t1[1] + $t1[2] + $t1[3] + $t1[4] + $t1[5]) EndIf AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
vivec45 Posted November 4, 2011 Author Share Posted November 4, 2011 (edited) I don't know where $t2 Comes from. Try this, should return true if $FilePath Is newer than $FilePath2 If Not @error Then Return ($t[0] + $t[1] + $t[2] + $t[3] + $t[4] + $t[5]) > ($t1[0] + $t1[1] + $t1[2] + $t1[3] + $t1[4] + $t1[5]) EndIf That was a typo, It's actually just the $t1. And your solution works fine, thanks. Edited November 4, 2011 by vivec45 Link to comment Share on other sites More sharing options...
BrewManNH Posted November 4, 2011 Share Posted November 4, 2011 (edited) This might work more reliably: MsgBox(0, "File comparison", CmpFileAge("C:f1.txt", "C:f2.txt")) Func CmpFileAge($FilePath, $FilePath2) $t = FileGetTime($FilePath, 0, 1) $t1 = FileGetTime($FilePath2, 0, 1) If Not @error Then If $t < $t1 Then Return "F1 is older" ElseIf $t = $t1 Then Return "Files are the same age" Else Return "F2 is older" EndIf EndIf EndFunc ;==>CmpFileAge EDIT: I forgot to include a check to see if they're the same age. Edited November 4, 2011 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
vivec45 Posted November 4, 2011 Author Share Posted November 4, 2011 This might work more reliably: MsgBox(0, "File comparison", CmpFileAge("C:f1.txt", "C:f2.txt")) Func CmpFileAge($FilePath, $FilePath2) $t = FileGetTime($FilePath, 0, 1) $t1 = FileGetTime($FilePath2, 0, 1) If Not @error Then If $t < $t1 Then Return "F1 is older" ElseIf $t = $t1 Then Return "Files are the same age" Else Return "F2 is older" EndIf EndIf EndFunc ;==>CmpFileAge EDIT: I forgot to include a check to see if they're the same age. Thanks. Link to comment Share on other sites More sharing options...
JohnOne Posted November 4, 2011 Share Posted November 4, 2011 This might work more reliably: Blimey! I never knew you could compare arrays like that. Nice. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
Developers Jos Posted November 4, 2011 Developers Share Posted November 4, 2011 Blimey! I never knew you could compare arrays like that. Nice.He isn't comparing arrays SciTE4AutoIt3 Full installer Download page - Beta files Read before posting How to post scriptsource Forum etiquette Forum Rules Live for the present, Dream of the future, Learn from the past. Link to comment Share on other sites More sharing options...
JohnOne Posted November 4, 2011 Share Posted November 4, 2011 Ah! of course not. Serves me right for not reading fully, duh! AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
BrewManNH Posted November 4, 2011 Share Posted November 4, 2011 The problem with comparing the dates as individual pieces in an array is that there are far too many checks to be made to make it an easy comparison. For instance, if the month on one file is 10 and the other is 11, but the days are 13 and 12 (November 12 and October 13, so I don't confuse anyone as to which date format I'm using), you couldn't just add them all together because those 2 numbers would be the same. You would need to check if the years are different, then check to see if the months are different, then days etc., it gets to be annoying fast. When it comes back as a string "YYYYMMDDHHMMSS" the comparison is very straightforward. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
JohnOne Posted November 4, 2011 Share Posted November 4, 2011 But they come in that order in the array, so shirley it would still work. AutoIt Absolute Beginners Require a serial Pause Script Video Tutorials by Morthawt ipify Monkey's are, like, natures humans. Link to comment Share on other sites More sharing options...
BrewManNH Posted November 4, 2011 Share Posted November 4, 2011 If you use the array return, to get a comparison that's as easy to code, you'd probably end up putting it into a string anyways. If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator Link to comment Share on other sites More sharing options...
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