Доброго времени суток.
На основании темы - http://autoit-script.ru/index.php?topic=1440.0
переделал под себя код для удаления временных файлов в папке %temp%
Но почему то файлы FileDelete($aReturn[$i]) не удаляет.
Хотя в переменной $aReturn[$i] - передается вроде верный путь.
Операционная система Windows 7.
На основании темы - http://autoit-script.ru/index.php?topic=1440.0
переделал под себя код для удаления временных файлов в папке %temp%
Но почему то файлы FileDelete($aReturn[$i]) не удаляет.
Хотя в переменной $aReturn[$i] - передается вроде верный путь.
Операционная система Windows 7.
Код:
;Интерфейс
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;Файловая система
#include <Date.au3>
#include <File.au3>
;Постоим интерфейс программы
#Region ### START Koda GUI section ### Form=C:\Distr\Administrator\Script\AutoIT\GUI\koda_1.7.3.0\Forms\Optimize.kxf
$Optimize = GUICreate("Optimize", 261, 261, 192, 124)
$txtAuthor = GUICtrlCreateLabel("Panov D.A.", 200, 0, 59, 17)
$GroupClear = GUICtrlCreateGroup("Очистить", 8, 16, 233, 177)
$chRecycle = GUICtrlCreateCheckbox("Корзина", 16, 40, 73, 17)
$chTempFiles = GUICtrlCreateCheckbox("Врем. файлы", 16, 72, 89, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$btnRun = GUICtrlCreateButton("Выполнить", 96, 224, 75, 25)
$btnExit = GUICtrlCreateButton("Выход", 176, 224, 75, 25)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$Recycle = 0
$TempFiles = 0
;Проверка версии ОС
If @OSVersion = "WIN_7" Then
#RequireAdmin ;если у Вас Windows 7, то раскомментируйте для системных папкок.
ElseIf @OSVersion = "WIN_XP" Then
Else
MsgBox(4096, "Error", "Данная программа предназначена только для Windows XP и Windows 7")
EndIf
;Переменные для чистки временных файлов
$path1 = @TempDir ;папка %temp% для очистки.
If @OSVersion = "WIN_7" Then ;Пока что недоделано
$path2 = 1
EndIf
$delta = "5" ; кол-во дней, старше которых удаляем.
$flag = 1 ; 0-дата последнего изменения, 1-дата создания, 2-дата последнего открытия.
;Проверка версии ОС
;Вечный цикл получения событий
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnExit
Exit
Case $btnRun ;Нажатие кнопки "Выполнить"
If $Recycle = 1 Then ;Очистка корзины
FileRecycleEmpty()
EndIf
If $TempFiles = 1 Then
_TempFilesRemove()
EndIf
MsgBox(4096, "Info", "Задачи выполненны")
Case $chTempFiles ;Очистка временных папок Windows
$TempFiles = BitAnd(GUICtrlRead($chTempFiles),$GUI_CHECKED)
Case $chRecycle
$Recycle = BitAnd(GUICtrlRead($chRecycle),$GUI_CHECKED)
EndSwitch
WEnd
Func _TempFilesRemove()
$aReturn = _FileSearch($path1, '*.*')
For $i = 1 To UBound($aReturn) - 1
$aTime = FileGetTime($aReturn[$i], $flag)
If _DateDiff('D', $aTime[0] & '/' & $aTime[1] & '/' & $aTime[2], _NowCalc()) > $delta Then
FileDelete($aReturn[$i])
;MsgBox(4096, "Info", $aReturn[$i])
EndIf
Next
_DirRemoveEmptyTime($path1)
EndFunc ;==>_TempFilesRemove
Func _FileSearch($sPath, $sFileMask)
Local $sOut = StringToBinary("0" & @CRLF, 2), $aOut
Local $hDir = Run(@ComSpec & ' /U/C DIR "' & $sPath & '\' & $sFileMask & '" /S/B/A-D', @SystemDir, @SW_HIDE, 6)
While 1
$sOut &= StdoutRead($hDir, False, True)
If @error Then ExitLoop
WEnd
$aOut = StringRegExp(BinaryToString($sOut, 2), "[^\r\n]+", 3)
If @error Then Return SetError(1)
$aOut[0] = UBound($aOut) - 1
Return $aOut
EndFunc ;==>_FileSearch
Func _DirRemoveEmptyTime($sDIR)
Local $iPRC, $aDIR = _FileListToArray($sDIR, '*', 2)
If IsArray($aDIR) Then
For $i = 1 To $aDIR[0]
_DirRemoveEmptyTime($sDIR & "\" & $aDIR[$i])
Next
EndIf
If DirGetSize($sDIR) = 0 Then
$aTimeDIR = FileGetTime($sDIR, $flag)
If _DateDiff('D', $aTimeDIR[0] & '/' & $aTimeDIR[1] & '/' & $aTimeDIR[2], _NowCalc()) > $delta Then
DirRemove($sDIR)
EndIf
EndIf
EndFunc ;==>_DirRemoveEmptyTime