auto 发表于 2011-8-17 14:27:23

在论坛找了一个FTP遍历的例子,但遍历速度太慢了,有没有会call dll改进一下

本帖最后由 auto 于 2011-8-26 19:18 编辑

#include <FTPEx.au3>
#include <Array.au3>
$server = 'ftp.mozilla.org';ftp.mozilla.org';服务器
$name = '' ;用户名
$pass = '' ;密码
$Port = '21' ;端口
$path = "" ;路径
Global $pp
ftp($server, $name, $pass, $Port, "")

Func ftp($server, $name, $pass, $Port, $path)
        $Open = _FTP_Open('MyFTP') ;打开一个FTP会话
        $Conn = _FTP_Connect($Open, $server, $name, $pass, 0, $Port) ;连接到ftp服务器
        $t = _FTP_DirSetCurrent($Conn, $path)
        ConsoleWrite($t&@TAB&$path&@CR)
        $aFile = _FTP_ListToArrayEx($Conn, 0, 0) ;列目录(0=文件和目录,1=目录,2=文件)(格式0=mm/dd/yyyy,1=yyyy/mm/dd)
        For $i = 1 To $aFile
                If $aFile[$i] = 16 And $aFile[$i] <> "." And $aFile[$i] <> ".." Then
                        $path = $path & $aFile[$i] & "/";
                        ftp($server, $name, $pass, $Port, $path)
                EndIf
        Next

        $Ftpc = _FTP_Close($Open) ;关闭 _FTP_Open 打开的回话
EndFunc   ;==>ftp
当调用自身程序完成时,好像值不对?不知道是哪个地方错了??

leon460 发表于 2011-8-17 15:00:07

什么值不对,请说清楚,

auto 发表于 2011-8-17 16:11:05

回复 2# leon460


    不能正常遍历,当子程序运行完时返回上一层时,$PATH的值不对

xiehuahere 发表于 2011-8-17 20:20:35

本帖最后由 xiehuahere 于 2011-8-17 20:21 编辑

$path = $path & $aFile[$i] & "/";
ftp($server, $name, $pass, $Port, $path)

这里的path跟函数定义时的参数path最好区别开来,用另一个变量如 path_new。
$path_new = $path & $aFile[$i] & "/"
ftp($server, $name, $pass, $Port, $path_new)

pusofalse 发表于 2011-8-17 22:53:50

_FTP_Open、_FTP_Connect、_FTP_Close 也在递归范围内了,把这两句放于ftp函数之外。

ac5474012 发表于 2011-8-18 08:24:57

我写了个FTP同步的,也许你需要。
http://www.autoitx.com/thread-26711-1-1.html

auto 发表于 2011-8-18 11:26:32

回复 5# pusofalse


这个试着放到程序外部。。我觉得也是放到外部,不然可能会产生很多新连接,
不单返回有问题,就是往下级目录也出错。进不了下一级

感觉一个连接只能设置一次远程目录,再设置就会无效

auto 发表于 2011-8-18 13:10:14

回复 6# ac5474012


    你代码运行也是出错,。。FTP的斜杠是错的吧。。
还有嵌套代码是一样。。
我只是将你的代码简化了而已
你的代码也不能正确运行。。不能下载文件到本地
只创建了几个文件夹就停了

auto 发表于 2011-8-26 14:40:06

没有人做FTP遍历的吗,现在找到一个可用的,
不过每一次列表都、_FTP_Open,_FTP_Connect一次。速度太慢了,
FTP东西有点多

SHINE 发表于 2011-9-17 01:35:16

我写了个,只是本来就连上FTP的那种, 上去找文件
页: [1]
查看完整版本: 在论坛找了一个FTP遍历的例子,但遍历速度太慢了,有没有会call dll改进一下