Sign in to follow this  
Followers 0
vivec45

Comparing results from GetFileTime()

11 posts in this topic

#1 ·  Posted (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 by vivec45

Share this post


Link to post
Share on other sites



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.

Share this post


Link to post
Share on other sites

#3 ·  Posted (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 by vivec45

Share this post


Link to post
Share on other sites

#4 ·  Posted (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 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 Gude
How 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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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 Gude
How 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

Share this post


Link to post
Share on other sites

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 Gude
How 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

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0