Jump to content
Sign in to follow this  
Zhelkus

Help with date_time_getfiletime and createfile

Recommended Posts

Zhelkus

I'm trying to use _Date_Time_CompareFileTime to compare two filetimes before copying one, kind of like a folder sync (simple and primitive). One file is on an external flash and the other is in the @temp folder.

Here's the pertinent data from my script:

#include "MyFunctions.au3"
#include <Date.au3>
#include <Array.au3>

$savslist = StringTrimRight(@TempDir & "\" & @ScriptName, 4) & "\savs list.txt"

$listfile = FileOpen($savslist, 10)

ScanFolderSAVS("Decode-dial");generates a list of filenames on each line
ScanFolderSAVS("Homebrew");this one does the same

FileClose($listfile)

Dim $savfromlocations[3];some key words that will filter the location of the files in the list
$savfromlocations[0] = "\Action\"
$savfromlocations[1] = "\John Peta\"
$savfromlocations[2] = "\Konami\"

Dim $szDrive, $szDir, $szFName, $szExt;needed for pathsplit

For $n = 1 To _FileCountLines($savslist);starting loop through file list
    $currentsav = FileReadLine($savslist, $n);file being read
    $currentsavsplit = _PathSplit($currentsav, $szDrive, $szDir, $szFName, $szExt);file's path split into an array
    
    $savname = $currentsavsplit[3] & $currentsavsplit[4];just keep things tidy, filename extracted
    $savto = StringTrimRight(@TempDir & "\" & @ScriptName, 4);just to keep things tidy,folder where the scripts will be copied
    
    For $x = 0 To UBound($savfromlocations) - 1;loop to filter the file locations from the flash card
        If StringInStr($currentsav, $savfromlocations[$x]) <> 0 Then;this is the filter
            If FileExists($savto & $savfromlocations[$x] & $savname) = 1 Then;if file exists, compare dates to see which is newer
                $file1 = _WinAPI_CreateFile($currentsav,2)
                $file2 = _WinAPI_CreateFile($savto & $savfromlocations[$x] & $savname,2)
                
                $time1 = _Date_Time_GetFileTime($file1)
                $time2 = _Date_Time_GetFileTime($file2)
                
                If _Date_Time_CompareFileTime($time1[2], $time2[2]) = 1 Then
                    $savscopied[$savscopied[0] + 1] = $savfromlocations[$x] & $currentsavsplit[3]
                    $savscopied[0] += 1
                    FileCopy($currentsav, $savto & $savfromlocations[$x] & $savname, 8)
                EndIf
            Else;if file in $savto doesn't exist then copy it
                $savscopied[$savscopied[0] + 1] = $currentsavsplit[3]
                $savscopied[0] += 1
                FileCopy($currentsav, $savto & $savfromlocations[$x] & $savname, 8)
            EndIf
            ExitLoop
        EndIf
    Next
Next

For some reason, $time2 and $time1 are empty but the $file handles aren't. Could somebody help me on this? What am I doing wrong?

Edited by Zhelkus

Share this post


Link to post
Share on other sites
Zhelkus

Bibidy-babidy-bump.... somebody, assisstance?

Share this post


Link to post
Share on other sites
zorphnog

I think you need to specify READ access level when opening the file:

$file1 = _WinAPI_CreateFile($currentsav,2,2)
$file2 = _WinAPI_CreateFile($savto & $savfromlocations[$x] & $savname,2,2)
Edited by zorphnog

Share this post


Link to post
Share on other sites
Zhelkus

I think you need to specify READ access level when opening the file:

$file1 = _WinAPI_CreateFile($currentsav,2,2)
$file2 = _WinAPI_CreateFile($savto & $savfromlocations[$x] & $savname,2,2)
Just tried it and nope, it wasn't it.

Could the problem be that one file being compared is stored on a FAT partition (flash card)? Would that have anything to do with WinAPI or date_time_getfiletime?

Thanks for trying tho.

Share this post


Link to post
Share on other sites
weaponx

Why don't you just use the builtin FileGetTime function for the comparison?

Share this post


Link to post
Share on other sites
Zhelkus

Why don't you just use the builtin FileGetTime function for the comparison?

Oh dear... you just made me look SO stupid.... but I thank you for that :)

I completely overlooked it... don't have the slightest idea how... thank you.

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.