首先去下载个 FTPEx.au3
给段源码你研究吧
#include <FTPEx.au3>
#include <Array.au3>
Local $path
$server = '192.168.1.1' 服务器
$name = 'admin' 用户名
$pass = 'admin' 密码
$Port = '21' 端口
$path = "c:\a1乡村\" 远程路径,FTP的路径。
$RemoteDir = $path 远程根路径转换,不用管它。
$LocalDir = "D:\存储软件\au3\进行中\FTP同步\实验室1\同步路径\" 本地路径,你想让文件下载到哪里?
$LocalDir = flocalDir($RemoteDir, $LocalDir)转换首目录,不用管
~ MsgBox(0, "$LocalDir", $LocalDir)
ftp($server, $name, $pass, $Port, $path, $RemoteDir)
Func ftp($server, $name, $pass, $Port, $path, $RemoteDir)
说明:主要函数,搜索,下载
$Open = _FTP_Open('MyFTP') 打开一个FTP会话
$Conn = _FTP_Connect($Open, $server, $name, $pass, 0, $Port) 连接到ftp服务器
_FTP_DirSetCurrent($Conn, $path)
$aFile = _FTP_ListToArrayEx($Conn, 0, 0) 列目录(0=文件和目录,1=目录,2=文件)(格式0=mm/dd/yyyy,1=yyyy/mm/dd)
~ _ArrayDisplay($aFile)
~ MsgBox(0,"显示","共(" & $aFile[0][0] & ")个")
~ MsgBox(0,"$aFile[$i][0个]文件名",$aFile[0][0])
For $i = 1 To $aFile[0][0]
If $aFile[$i][2] = 16 And $aFile[$i][0] <> "." And $aFile[$i][0] <> ".." Then
~ $path=$path&$aFile[$i][0]&"\"
~ MsgBox(0, "$path", $path & $aFile[$i][0] & "\", $RemoteDir)
ftp($server, $name, $pass, $Port, $path & $aFile[$i][0] & "\", $RemoteDir)
EndIf
If $aFile[$i][0] <> "." And $aFile[$i][0] <> ".." And $aFile[$i][2] <> 16 Then
检验
~ MsgBox(0,"",$aFile[$i][0])
$fname = $aFile[$i][0]文件名
$sync = ftpsync($LocalDir, $RemoteDir, $path, $fname)
~ MsgBox(0,"是否存在文件返回信息",$sync)
~ If $fname = "PiView.mdb" Then
~ MsgBox(0, "$sync", $sync[0]&@LF&$sync[1])
~ EndIf
Select
Case $sync[0] = 1未发现文件
$ftp_download = _FTP_FileGet($Conn, $path & $fname, $sync[1], False) 下载文件(True=覆盖 False=不覆盖(默认))
~ MsgBox(0, $path & $fname, $sync[1])
Case $sync[0] = 2发现有同名文件
$ftpsize = _FTP_FileGetSize($Conn, $path & $aFile[$i][0])
$localsize = FileGetSize($sync)
~ MsgBox(0, "大小对比", $ftpsize & "-" & $localsize)
If $ftpsize <> $localsize Then
~ MsgBox(0, "大小对比不成功", $ftpsize & "-" & $localsize)
~ MsgBox(0, "大小对比不成功", $path & $aFile[$i][0]& "-" & $sync)
$ftp_download = _FTP_FileGet($Conn, $path & $fname, $sync[1], False)
~ MsgBox(0,"$ftp_download",$ftp_download)
EndIf
Case Else
MsgBox(0, "意外错误", "搜索失败")
EndSelect
~ MsgBox(0,"次数",$aFile[$i][0])
EndIf
~ MsgBox(0,"显示","名 = " & $aFile[$i][0] & @CRLF & $aFile[$i][1] & @CRLF & $aFile[$i][2] & @CRLF & $aFile[$i][3] & @CRLF & $aFile[$i][4] & @CRLF & $aFile[$i][5])
Next
$aFile[$i][0个]文件名
$aFile[$i][1]文件大小
$aFile[$i][2]文件属性
$aFile[$i][3]文件修改日期-时间
$aFile[$i][4]文件创作日期-时间
$aFile[$i][5]文件通入日期-时间
$Ftpc = _FTP_Close($Open) 关闭 _FTP_Open 打开的回话
EndFunc ==>ftp
~ Func Download
~ 用途:下载一个FTP上的文件
~ $ftp_download = _FTP_FileGet($Conn, "111\test222.txt", "e:\au3_ftp\test222.txt", False) 下载文件(True=覆盖 False=不覆盖(默认))
~ EndFunc ==>ftp
Func ftpsync($LocalDir, $RemoteDir, $path, $fname)本地路径,远程根路径路径,变化中的远程路径,要下载的文件名。
Local $loc12
$loc12 = _ArrayCreate("0", "0")
~ 说明:位置错误返回0,失败返回1,成功返回路径。主要用来判断是否有相同的文件。
If FileExists($LocalDir) Then看看本地是否存在,要是不存在就创建一个。
Else
DirCreate($LocalDir)
EndIf
Local $len = StringLen($RemoteDir)
Local $len1 = StringLen($path)
$New = StringRight($path, $len1 - $len)
~ MsgBox(0, "$New", $New)
~ MsgBox(0, "$fname", $fname)
If FileExists($LocalDir & $New) Then
Else
创建目录
DirCreate($LocalDir & $New)
EndIf
~ MsgBox(0,"需要判断是否存在的文件",$LocalDir & $New & $fname)
If FileExists($LocalDir & $New & $fname) Then
判断文件大小
$loc12[0] = 2
$loc12[1] = $LocalDir & $New & $fname
~ Return $LocalDir & $New & $fname
~ MsgBox(0,"文件是否存在判定-是存在",$LocalDir & $New & $fname)
Else
创建目录下载文件
~ Return 1
$loc12[0] = 1
$loc12[1] = $LocalDir & $New & $fname
EndIf
Return $loc12
EndFunc ==>ftpsync
Func flocalDir($RemoteDir, $LocalDir)
~ 说明:创建首目录
$LOG = StringSplit($RemoteDir, "\")
If $LOG[0] <= 1 Then如果呢~ 只有根目录盘那就是C盘根目录
Local $result = StringLeft($RemoteDir, 1)
$LocalDir = $LocalDir & $result & "盘根目录\"
Return $LocalDir
Else如果不是那远程目录的最后一个文件夹,便是根目录的最后一个文件夹了。
$Loc1 = $LOG[$LOG[0] - 1]
$LocalDir = $LocalDir & $Loc1 & "\"
Return $LocalDir
EndIf
EndFunc ==>flocalDir
用软件实现比较容易吧?我用的是Bestsync2011,就是觉得操作简单,容易上手,速度又快,稳定,不占用太多系统内存,又能不登陆作为windows服务同步,我用了很久了,还不错了。
比如:
1. 你本地装上软件以后,在主菜单里面 编辑-->追加任务
文件夹1选择 驱动盘中要备份的文件夹位置
文件夹2选择 选择FTP(填写FTP地址等相关参数)
同步方向为 文件夹2 --》文件夹1
在 FTP设定 下面填写服务器地址,账户名,密码等信息)
然后选择 完成 按钮
2. 在主界面下,双击你刚建立的任务,会弹出属性对话框
3. 选择“日程”属性页,勾选最后一个复选框“按指定日程启动任务”,然后在下面选择你想同步的具体时间点就Ok了~~嘿嘿
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)