找回密码
 加入
搜索
查看: 2208|回复: 3

[AU3基础] _FTP_FileDelete 不能删除ftp上的文件[已解决]

[复制链接]
发表于 2011-12-19 15:18:08 | 显示全部楼层 |阅读模式
本帖最后由 leon460 于 2011-12-20 10:45 编辑

下载ftp文件没有问题了  ,但_FTP_FileDelete 不能删除ftp上的文件    不知道是哪里出错了,请帮忙看看,头昏脑涨中,,总觉得ftp相关函数不怎么好用,呵呵,没有本地操作文件来的方便

不好意思了,是服务器上的时间格式不对,

以下是代码
#include <FTPEx.au3>
#include "CoProc.au3"
#include <misc.au3>
#include <Array.au3>

$sleeptime=IniRead(@ScriptDir & "\settings.ini","settings","runtime",20)
$savetime=IniRead(@ScriptDir & "\settings.ini","settings","savetime",7)
$server = IniRead(@ScriptDir & "\settings.ini","settings","server","")
$username = IniRead(@ScriptDir & "\settings.ini","settings","username","")
$pass = IniRead(@ScriptDir & "\settings.ini","settings","pass","")
$targetfilepath = IniRead(@ScriptDir & "\settings.ini","settings","targetfilepath","")

While 1        
        ;$iPidotherfuc = _CoProc("ftp")
        ftp()
        Sleep($sleeptime*1000)
#CS         If ProcessExists($iPidotherfuc) Then
                   ProcessClose($iPidotherfuc)
           endif        
#CE
WEnd        

Func ftp()        
        ;_Singleton("ftpfunc",0)
        Dim $downftpfileflag
        Dim $fFailIfExists
        $i_Passive = 1        
        
        $Open = _FTP_Open('slip ftp ')
        $Conn = _FTP_Connect($Open, $server, $username, $pass,$i_Passive);,$INTERNET_FLAG_NO_CACHE_WRITE, $INTERNET_FLAG_RELOAD, $INTERNET_FLAG_RESYNCHRONIZE)                
        If $Conn <> 0 Then                
                $aFile = _FTP_ListToArrayEx($Conn,0,$INTERNET_FLAG_NO_CACHE_WRITE, $INTERNET_FLAG_RELOAD, $INTERNET_FLAG_RESYNCHRONIZE)                ;只找文件
                ;_ArrayDisplay($aFile,"文件夹与文件信息")
                If IsArray($aFile) Then 
                        Sleep(2000)                        ;等待下,以防止机台产生数据中                        
                        For $i= 1 To $aFile[0][0]                                
                                $sourcefile = "/" & $aFile[$i][0]                
                                $targetfile = $targetfilepath & $aFile[$i][0]                                        
                                $filegroup=StringSplit($aFile[$i][0],".")
                                If Not IsArray($filegroup) Then 
                                        ContinueLoop        ;文件中没有符号  “.”,则判断是文件夹                                
                                Else
                                        If  $filegroup[0] >= 2 Then 
                                                        If  $filegroup[2] = "txt" Or $filegroup[2] = "tff" Then                        ;如果是txt档,则下载此文件        
                                                                ;MsgBox(0,FileGetSize($targetfilepath & $aFile[$i][0]),$aFile[$i][1],2)
                                                                If FileGetSize($targetfilepath & $aFile[$i][0]) < $aFile[$i][1] Then         ;如果ftp服务器上的文件大于本地的文件,则上传
                                                                        FileSetAttrib($targetfile,"-R")
                                                                        $deleteflag=FileDelete($targetfile)                                                        
                                                                        Sleep(200)
                                                                        $downftpfileflag=_FTP_FileGet($Conn,$sourcefile,$targetfile, $fFailIfExists = False,$INTERNET_FLAG_TRANSFER_ASCII,$INTERNET_FLAG_RESYNCHRONIZE)        ;false为不覆盖
                                                                        ;_FTP_FileDelete($Conn,$sourcefile)
                                                                        ;MsgBox(0,$sourcefile,$targetfile)
                                                                        FileSetTime($targetfile,"",0);要更改的时间戳类型: 0 = 修改时间(默认), 1 = 创建时间, 2 = 访问时间        
                                                                        
                                                                Else                 ;
                                                                        ;MsgBox(0,"",$targetfile)
                                                                        $timearray=FileGetTime($targetfile)                                                        
                                                                        If IsArray($timearray) Then
                                                                                
                                                                                $localtime=$timearray[0] & $timearray[1] & $timearray[2] 
                                                                                $romotetime=$aFile[$i][3]
                                                                                $romotetimemid=StringLeft($romotetime,10)
                                                                                $romotetimemid1=StringSplit($romotetimemid,"/")
                                                                                $romotetimeLast=$romotetimemid1[1] & $romotetimemid1[2] & $romotetimemid1[3]
                                                                                $timediff=$romotetimeLast-$localtime
                                                                                ;MsgBox(0,$timediff,$savetime)
                                                                                If $timediff >= $savetime  Then
                                                                                        ;MsgBox(0,"",$sourcefile)
                                                                                        ;_FTP_FileDelete($Conn,$sourcefile)
                                                                                        _FTP_FileDelete($Conn,$aFile[$i][0])
                                                                                        ;MsgBox(0,"",@error)
                                                                                EndIf                                                                
                                                                        EndIf                                                                
                                                                EndIf
                                                        endif        
                                        EndIf                                                
                                EndIf                                
                        Next                        
                EndIf                        
        EndIf        
        $Ftpc = _FTP_Close($Open)
EndFunc
发表于 2011-12-19 17:22:08 | 显示全部楼层
没条件做相关实验,帮你顶个
顺便问声,有删除权限吗?  服务器相关权限开放没?
 楼主| 发表于 2011-12-19 18:34:44 | 显示全部楼层
回复 2# user3000

权限没有问题,添加了删除相关的权限。
 楼主| 发表于 2011-12-20 10:26:24 | 显示全部楼层
有最新发现:
我运行在win7 32bit enterprise就没有问题,但是运行在win2003 32bit 企业版 sp2下就不行,同样的程序哦
真是奇怪了
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-10-1 03:20 , Processed in 0.113134 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表