Что нового

[Сеть, интернет] удаления файлов старше определённой даты с FTP сервера

ra4o

AutoIT Гуру
Сообщения
1,165
Репутация
246
Хмм... Для меня сложность заключается в том, что я не могу проверить работу скрипта в своих условиях, так как формат даты на Вашем FTP сервере другой... Мне постоянно приходится изменять скрипт, прежде, чем выложить, вот и получаются мелкие недочёты :( Попробуйте в функциях вычисления первой и последней дат перед уловием
Код:
if $NextFileYear=$FileYear and $NextFileMonth=$FileMonth and $NextFileDay>$FileDay Then Return False
вставить, например "MsgBox" с этими переменными для того что-бы определить - действительно "$FileMonth"это значение месяца ,"$FileDay"значение дня , а "$FileYear"это год...
И ещё - я смотрю, что у Вас есть файлы с одной датой , но разным временем , а по времени я не проверяю и даты проверяю на больше/меньше возможно следует заменить
Код:
and $NextFileDay>$FileDay
на
Код:
and _DateDiff('n',Дата следующего файла,Дата текущего файла)>0
 
Автор
K

Ksenz44

Новичок
Сообщения
32
Репутация
0
Добрый день сделал первое что вы говорили вставил "MsgBox" в 1 и 2 функцию в первой _LastDay он сразу поле окна с файлами выдает все правильно год месяц и дату файла, если стоит во второй функции то не выдает их вообще.
Странно почему опять сбился подсчёт дней как я понимаю во 3 столбце должна быть дата файла а там чуш какая-то и дней опять 128. Мы же нашли формат есть даже предыдущий скрипт который до 31 числа хорошо у нас считал дату и удалял все.
 
Автор
K

Ksenz44

Новичок
Сообщения
32
Репутация
0
Думал думал и сделал чутка проще все добавил условие перед проверкой количества дней на проверку месяца и вроде все работает ща мусора накопится проверю.
Код:
#include <FTPEx.au3>
#include <Date.au3>
#include <Array.au3>

Local $sPassive = "1"
Local $sPort = "3568"
Local $sServer = "95.31.211.16"
Local $sUserName = "BackUp"
Local $sPassword = "94MSv5bX"
Local $delta = "22" ; кол-во дней, старше которых удаляем.
Local $sDir = "/ftp_shares/Backup1c/BackUpSQL/";Здесь путь к папке, где искать файлы;Здесь путь к папке, где искать файлы

Local $hOpen = _FTP_Open('MyFTP Control')
If @error Then
    MsgBox(16, "Супер FTP клиент", "Не удалось создать сессию! Код ошибки: " & @error & "")
    Exit
EndIf

Local $hConn = _FTP_Connect($hOpen, $sServer, $sUserName, $sPassword, $sPassive, $sPort)
If @error Then
    MsgBox(16, "Супер FTP клиент", "Не удалось подключиться к серверу! Код ошибки: " & @error & "")
    Local $Ftpc = _FTP_Close($hOpen)
    Exit
EndIf

_FTP_DirSetCurrent($hConn, $sDir)
If @error Then
    MsgBox(16, "Супер FTP клиент", "Не удалось установить" & _
            "текущий каталог на FTP сервере." & @CRLF & "в каталоге " & $sDir & @CRLF & " Код ошибки: " & @error & "")
    Local $Ftpc = _FTP_Close($hOpen)
    Exit
EndIf

Local $aFolder = _FTP_ListToArray($hConn, 1);Получение названия всех папок по пути $sDir
;_ArrayDisplay($aFolder, "Каталоги в " & $sDir)

For $i = 1 To $aFolder[0];Перебор всех папок
    _FTP_DirSetCurrent($hConn, $sDir & $aFolder[$i]);Устанавка текущего каталога
    If @error Then
        MsgBox(16, "Супер FTP клиент", "Не удалось установить" & "текущий каталог на FTP сервере." & @CRLF & "в каталоге " & $sDir & $aFolder[$i] & @CRLF & " Код ошибки: " & @error & "")
        Local $Ftpc = _FTP_Close($hOpen)
        Exit
    EndIf
    $nummon=0
    Local $aFile = _FTP_ListToArrayEx($hConn, 2);Получение данных по файлам в текущей папке
    If IsArray($aFile) Then
		
        For $y = 1 To $aFile[0][0]
            $FileData = StringSplit($aFile[$y][3], ' ')
            $Data = StringSplit($FileData[1], '/')
            $NewFileData = $Data[1] & '/' & $Data[3] & '/' & $Data[2] & ' ' & $FileData[2];Замена местами дня с месяцем изменения файла
			$mon= $Data[3]       		
		If $mon = $nummon Then 
			If _DateDiff('D', $NewFileData, _NowCalc()) > $delta Then;Удаление файла,еси дата изменения > $delta
                _FTP_FileDelete($hConn, $sDir & $aFolder[$i] & '/' & $aFile[$y][0]) ;и день не последний и не первый в месяце
				If @error Then
                    MsgBox(16, "Супер FTP клиент", "Ошибка удаления файла " & @CRLF & $sDir & $aFolder[$i] & '/' & $aFile[$y][0] & "" & @CRLF & "Код ошибки: " & @error & "")
				EndIf
			EndIf
		Else
			$nummon=$mon 
        EndIf			
        Next;Сдедующий файл в текущей папке
    EndIf
Next;Следующая папка в $sDir

Local $Ftpc = _FTP_Close($hOpen)
 
Верх