Sign in to follow this  
Followers 0
schilbiz

Trying to FileDelete() files older than 10 hours

5 posts in this topic

Hello,

I am trying to delete the *.trn files in the c:\temp1 folder that are older than 10 hours. Can you please take a look at the code and offer corrections? I am running this on a Windows 7 with AutoIt v 3.3.6.1.

When I run a simple FileDelete("c:\temp1\*.trn") it works fine but would like to only delete them if older than 10 hours.

#include <file.au3>
#include <date.au3>

$sourceFolder = "C:\temp1"
$fileList = _FileListToArray($sourceFolder, "*.trn", 1)

For $X = 1 to $fileList[0]
    $tDate = FileGetTime($sourceFolder & "\" & $fileList[$X], 1, 0)
    $fDate = StringFormat("%s/%s/%s %s:%s:%s", $tDate[0],$tDate[1],$tDate[2],$tDate[3],$tDate[4],$tDate[5])
    If _DateDiff('h', $fDate, _NowCalc()) > 10 Then FileDelete($sourceFolder & "\" & $fileList[$X])
Next

Share this post


Link to post
Share on other sites



Only thing missing is some error checkup to prevent a terminal error if there where no files found by _FileListToArray.

Other than that its fine.

Trivial(personal) additional changes I would do:

- added int() to turn the double-type value from _DateDiff() into a real int().

- more consistent variable type use in the variable names.

#include <file.au3>
#include <date.au3>

test()
Func test()
    Local $sSourceFolder = @TempDir
    Local $aFileList = _FileListToArray($sSourceFolder, "*.*", 1)
;~  If @error Then Return SetError(@error) ;; (ErrorCheckup1) check doc for error value's.
    If Not @error Then ;; Or (ErrorCheckup2)
        Local $aDate, $sDate, $nDiff
        For $i = 1 To $aFileList[0]
            $aDate = FileGetTime($sSourceFolder & "\" & $aFileList[$i], 1, 0)
            $sDate = StringFormat("%s/%s/%s %s:%s:%s", $aDate[0], $aDate[1], $aDate[2], $aDate[3], $aDate[4], $aDate[5])
            $nDiff = Int(_DateDiff('h', $sDate, _NowCalc())) ;; make double to int. (not needing double-type in this case)
            If $nDiff > 10 Then ConsoleWrite($nDiff & ', ' & $aFileList[$i] & @CRLF)
;~          FileDelete($sSourceFolder & "\" & $aFileList[$i])
        Next
    EndIf
EndFunc

"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

Share this post


Link to post
Share on other sites

That worked, thank you MvGulik.

Share this post


Link to post
Share on other sites

#4 ·  Posted (edited)

StringFormat() is a bit of a dog...

This:

$sDate = FileGetTime($sSourceFolder & "\" & $aFileList[$i], 1, 1)
$sDate = StringRegExpReplace($sDate, "(....)(..)(..)(..)(..)(..)", "\1/\2/\3 \4:\5:\6")

is about 400% faster than these two lines:

$aDate = FileGetTime($sSourceFolder & "\" & $aFileList[$i], 1, 0)
$sDate = StringFormat("%s/%s/%s %s:%s:%s", $aDate[0], $aDate[1], $aDate[2], $aDate[3], $aDate[4], $aDate[5])

typo

Edited by Spiff59

Share this post


Link to post
Share on other sites

#5 ·  Posted (edited)

Hehe. Never seen StringFormat() as a potential slow function. Never tested it of course either.

One thing though. Merging commands is in general not a good in examples I think. (Apart from the lesser readability, in some cases it can be slower* than a unmerged command version.)

*) not talking really significant speed differences in general.

Edited by MvGulik

"Straight_and_Crooked_Thinking" : A "classic guide to ferreting out untruths, half-truths, and other distortions of facts in political and social discussions."
"The Secrets of Quantum Physics" : New and excellent 2 part documentary on Quantum Physics by Jim Al-Khalili. (Dec 2014)

"Believing what you know ain't so" ...

Knock Knock ...
 

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