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

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

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

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

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

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

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

  11. While 1       
  12.         ;$iPidotherfuc = _CoProc("ftp")
  13.         ftp()
  14.         Sleep($sleeptime*1000)
  15. #CS         If ProcessExists($iPidotherfuc) Then
  16.                    ProcessClose($iPidotherfuc)
  17.            endif       
  18. #CE
  19. WEnd       

  20. Func ftp()       
  21.         ;_Singleton("ftpfunc",0)
  22.         Dim $downftpfileflag
  23.         Dim $fFailIfExists
  24.         $i_Passive = 1       
  25.        
  26.         $Open = _FTP_Open('slip ftp ')
  27.         $Conn = _FTP_Connect($Open, $server, $username, $pass,$i_Passive);,$INTERNET_FLAG_NO_CACHE_WRITE, $INTERNET_FLAG_RELOAD, $INTERNET_FLAG_RESYNCHRONIZE)               
  28.         If $Conn <> 0 Then               
  29.                 $aFile = _FTP_ListToArrayEx($Conn,0,$INTERNET_FLAG_NO_CACHE_WRITE, $INTERNET_FLAG_RELOAD, $INTERNET_FLAG_RESYNCHRONIZE)                ;只找文件
  30.                 ;_ArrayDisplay($aFile,"文件夹与文件信息")
  31.                 If IsArray($aFile) Then
  32.                         Sleep(2000)                        ;等待下,以防止机台产生数据中                       
  33.                         For $i= 1 To $aFile[0][0]                               
  34.                                 $sourcefile = "/" & $aFile[$i][0]               
  35.                                 $targetfile = $targetfilepath & $aFile[$i][0]                                       
  36.                                 $filegroup=StringSplit($aFile[$i][0],".")
  37.                                 If Not IsArray($filegroup) Then
  38.                                         ContinueLoop        ;文件中没有符号  “.”,则判断是文件夹                               
  39.                                 Else
  40.                                         If  $filegroup[0] >= 2 Then
  41.                                                         If  $filegroup[2] = "txt" Or $filegroup[2] = "tff" Then                        ;如果是txt档,则下载此文件       
  42.                                                                 ;MsgBox(0,FileGetSize($targetfilepath & $aFile[$i][0]),$aFile[$i][1],2)
  43.                                                                 If FileGetSize($targetfilepath & $aFile[$i][0]) < $aFile[$i][1] Then         ;如果ftp服务器上的文件大于本地的文件,则上传
  44.                                                                         FileSetAttrib($targetfile,"-R")
  45.                                                                         $deleteflag=FileDelete($targetfile)                                                       
  46.                                                                         Sleep(200)
  47.                                                                         $downftpfileflag=_FTP_FileGet($Conn,$sourcefile,$targetfile, $fFailIfExists = False,$INTERNET_FLAG_TRANSFER_ASCII,$INTERNET_FLAG_RESYNCHRONIZE)        ;false为不覆盖
  48.                                                                         ;_FTP_FileDelete($Conn,$sourcefile)
  49.                                                                         ;MsgBox(0,$sourcefile,$targetfile)
  50.                                                                         FileSetTime($targetfile,"",0);要更改的时间戳类型: 0 = 修改时间(默认), 1 = 创建时间, 2 = 访问时间       
  51.                                                                        
  52.                                                                 Else                 ;
  53.                                                                         ;MsgBox(0,"",$targetfile)
  54.                                                                         $timearray=FileGetTime($targetfile)                                                       
  55.                                                                         If IsArray($timearray) Then
  56.                                                                                
  57.                                                                                 $localtime=$timearray[0] & $timearray[1] & $timearray[2]
  58.                                                                                 $romotetime=$aFile[$i][3]
  59.                                                                                 $romotetimemid=StringLeft($romotetime,10)
  60.                                                                                 $romotetimemid1=StringSplit($romotetimemid,"/")
  61.                                                                                 $romotetimeLast=$romotetimemid1[1] & $romotetimemid1[2] & $romotetimemid1[3]
  62.                                                                                 $timediff=$romotetimeLast-$localtime
  63.                                                                                 ;MsgBox(0,$timediff,$savetime)
  64.                                                                                 If $timediff >= $savetime  Then
  65.                                                                                         ;MsgBox(0,"",$sourcefile)
  66.                                                                                         ;_FTP_FileDelete($Conn,$sourcefile)
  67.                                                                                         _FTP_FileDelete($Conn,$aFile[$i][0])
  68.                                                                                         ;MsgBox(0,"",@error)
  69.                                                                                 EndIf                                                               
  70.                                                                         EndIf                                                               
  71.                                                                 EndIf
  72.                                                         endif       
  73.                                         EndIf                                               
  74.                                 EndIf                               
  75.                         Next                       
  76.                 EndIf                       
  77.         EndIf       
  78.         $Ftpc = _FTP_Close($Open)
  79. 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, 2026-9-21 07:41 , Processed in 0.076616 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2026 Discuz! Team.

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