#Include <FTPEx.au3>
#Include <WinAPI.au3>
Global Const $Host = "192.168.88.1"
Global Const $Login = "ftpuser"
Global Const $Password = ""
Global Const $s_RemotePath = "disk1/files"
Global Const $localdir = "D:\ftp\"
Global $hFtp, $hSession, $hFind, $aData, $return = 0, $file, $sizeFTP, $sizeLocal
Func FTP_Close()
_FTP_FindFileClose($hFind)
_FTP_Close($hFtp)
EndFunc
Func Check_Local_Dir()
Select
Case FileExists($localdir) = 0
ConsoleWrite("Каталога нет, создаю"& @CR)
DirCreate($localdir)
Case FileExists($localdir) = 1
ConsoleWrite("Каталог есть"& @CR)
Case Else
ConsoleWrite("ошибка проверки наличия локального каталога"& @CR)
EndSelect
EndFunc
Func FTP_Open()
$hFtp = _FTP_Open('MyFtp')
$hSession = _FTP_Connect($hFtp, $Host, $Login, $Password)
_FTP_DirSetCurrent($hSession, $s_RemotePath)
Global $aData = _FTP_ListToArray($hSession, 2)
If @error Then Exit
ConsoleWrite ($aData[0]& " файлов на фтп" & @CR)
For $a = 1 To $aData[0]
Local_File_Check($aData[$a])
Next
EndFunc
Func FTP_Copy_File($file,$sleep)
ConsoleWrite("Качаем файл на локальный пк"& @CR)
_FTP_FileGet($hSession, $file, $localdir&$file, True)
Sleep($sleep)
Local_File_Check($file)
EndFunc
Func Local_File_Check($file)
ConsoleWrite("проверяем наличие файла "&$file& " в локальном каталоге"& @CR)
Select
Case FileExists($localdir&$file) = 0
ConsoleWrite("нет файла "&$file&" в локальном каталоге"& @CR)
FTP_Copy_File($file,1000)
Case FileExists($localdir&$file) = 1
ConsoleWrite("есть файл "&$file&" в локальном каталоге"& @CR)
FTP_and_local_size_file($file)
Case Else
ConsoleWrite("ошибка проверки наличия файлов в локальном каталоге"& @CR)
EndSelect
EndFunc
Func FTP_and_local_size_file($file)
$sizeFTP = _FTP_FileGetSize($hSession, $file)
ConsoleWrite("Размер файла на фтп "&$sizeFTP& @CR)
$sizelocal = FileGetSize($localdir&$file)
ConsoleWrite("Размер файла в локальном каталоге "&$sizelocal& @CR)
If $sizeFTP = $sizelocal Then
ConsoleWrite("Файл "&$file&" имеет один размер, скачивание удалось"& @CR)
Else
ConsoleWrite("Файл "&$file&" имеет разный размер, скачивание не удалось"& @CR)
FileDelete($localdir&"\"&$file)
Select
Case $return < 5
FTP_Copy_File($file,5000)
$return = $return + 1
Case $return < 10
FTP_Copy_File($file,10000)
$return = $return + 1
Case Else
ConsoleWrite("Файл не хочет докачиваться, возможно нужно увеличить время на скачивание."& @CR)
EndSelect
EndIf
EndFunc
Check_Local_Dir()
FTP_Open()
FTP_Close()
Newfunc()
Func Newfunc()
MsgBox(1, "MyFtp", "Все файлы скачаны, чо делаем дальше?")
EndFunc