tuffgong Posted May 6, 2016 Posted May 6, 2016 I know this has been discussed before and I have read all that I could find but I am getting an error. Any help would be much appreciated. I have two folders on the desktop: sampleTXT and Moved. The sampleTXT folder contains a few dozen text files. My goal is to sort through the files and move any older than 35 days over to the "Moved" folder. Here is my text: #include <File.au3> #include <Array.au3> #include <Date.au3> Local $sPath = @DesktopDir & "\sampleTXT" Local $aLogs = _FileListToArray($sPath, "*", 1) For $i = 1 to $aLogs[0] $aDate = FileGetTime($sPath & $aLogs[$i], 0, 0) $aaDate = $aDate[0] & "/" & $aDate[1] & "/" & $aDate[2] If _DateDiff("D", $aaDate, _NowCalcDate()) > 35 Then FileMove($aLogs[$i], @DesktopDir & "\Moved") Next Here is the error I am getting: Line 11 (File "xxxxxx") $aaDate = $aDate[0] & "/" & $aDate[1] & "/" & $aDate[2] $aaDate = $aDate^ ERROR Error: Subscript used on non-accessible variable
Trong Posted May 6, 2016 Posted May 6, 2016 (edited) Try: #include <File.au3> #include <Array.au3> #include <Date.au3> Local $sPathIN = @DesktopDir & "\DirIN" Local $sPathOUT = @DesktopDir & "\DirOUT" Local $aLogs = _FileListToArray($sPathIN, "*", 1) If Not @error And IsArray($aLogs) Then For $i = 1 To 0 $aDate = FileGetTime($sPathIN & "\" & $aLogs[$i], 0, 0) If Not @error And IsArray($aDate) Then $aaDate = $aDate[0] & "/" & $aDate[1] & "/" & $aDate[2] ;~ FileMove($sPathIN & "\" & $aLogs[$i], $sPathOUT & "\", 1 + 8) If _DateDiff("D", $aaDate, _NowCalcDate()) > 35 Then FileMove($sPathIN & "\" & $aLogs[$i], $sPathOUT & "\", 1 + 8) EndIf Next EndIf Edited May 6, 2016 by Trong add check error! Regards,
tuffgong Posted May 6, 2016 Author Posted May 6, 2016 Thanks for the great response. Unfortunately, I am still getting a similar error. I didn't bother editing my script with your changes. Since they are so similar I copied and pasted and got a similar error: Line 10 For $i = 1 To $aLogs[0] For $i = 1 To $aLogs^ERROR Error:P Subscript used on non-accessible variable. I feel like I(we) are just missing something small. Any ideas?
InunoTaishou Posted May 6, 2016 Posted May 6, 2016 Local $aLogs = _FileListToArray($sPath, "*", 1) If (Not @error) Then For $i = 1 To $aLogs[0] $aDate = FileGetTime($sPathIN & "\" & $aLogs[$i], 0, 0) If Not @error And IsArray($aDate) Then $aaDate = $aDate[0] & "/" & $aDate[1] & "/" & $aDate[2] ;~ FileMove($sPathIN & "\" & $aLogs[$i], $sPathOUT & "\", 1 + 8) If _DateDiff("D", $aaDate, _NowCalcDate()) > 35 Then FileMove($sPathIN & "\" & $aLogs[$i], $sPathOUT & "\", 1 + 8) EndIf Next EndIf tuffgong 1
Trong Posted May 6, 2016 Posted May 6, 2016 (edited) Add check error! Edited May 6, 2016 by Trong InunoTaishou faster ! Regards,
tuffgong Posted May 6, 2016 Author Posted May 6, 2016 Thank you, thank you, thank you! So helpful. It is working. It looks like my FileGetTime statement was off. I have to look back at why I had it that way. Also my FileMove statement needed some work. Here is the final code that does the trick: #include <File.au3> #include <Array.au3> #include <Date.au3> Local $sPathIN = @DesktopDir & "\sampleTXT" Local $sPathOUT = @DesktopDir & "\Moved" Local $aLogs = _FileListToArray($sPathIN, "*", 1) If (Not @error) Then For $i = 1 to $aLogs[0] $aDate = FileGetTime($sPathIN & "\" & $aLogs[$i], 0, 0) If Not @error And IsArray($aDate) Then $aaDate = $aDate[0] & "/" & $aDate[1] & "/" & $aDate[2] If _DateDiff("D", $aaDate, _NowCalcDate()) > 35 Then FileMove($sPathIN & "\" & $aLogs[$i], $sPathOUT & "\", 1 + 8) EndIf Next EndIf So grateful for your help. Thanks again!
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