Autoit 模拟dos窗口 实现ftp功能
在winnt4.0 中因为无法使用 _ftpOpen _ftpFileget等函数,我想直接用autoit模拟实现如下功能:
在winnt4.0 cmd跳出窗口ftp:服务器ip --- 输入用户名----,输入密码---ls显示出文件列表--- get以上得到的文件----delete以上文件
请问以上该如何实现?谢谢 本帖最后由 MaGiCmAn 于 2013-9-13 19:21 编辑
Run("cmd.exe /c ftp **********","")
ControlSend("","","",xxxx) ;用户名
ControlSend("","","","{enter}")
ControlSend("","","",xxxx) ;密码
ControlSend("","","","{enter}")
ControlSend("""","","get xxx.txt") ;下载文件
ControlSend("","","","{enter}")其他命令自行搜索 回复 2# MaGiCmAn
怎样将dos窗口中 ls的命令 输入到一个文件中,以便给 get 命令使用? 回复 3# leon460
StdoutRead() Winnt4.0?这么老而且不常用的系统,AU3能行吗?我在Win98系统里面用Au3都是有很多限制的 回复 5# xms77
公司的机台,没有办法了哦 批处理配合AU3. 完全实现你要的功能.并做了异常处理. 注释的很详细,希望能帮你
;参数定义:
;$serverInfo 服务器IP
;$serverInfo 服务器登录账户
;$serverInfo 服务器密码
;$serverInfo 服务器要下载的文件列表,用星号隔开.如果只有一个文件请不要加星号.
;$serverInfo 要生成的脚本文件
Local $serverInfo = ["127.0.0.1", "12", "12", "ddf*222*333", @HomeDrive & "\GetFtpFile.sc"] ;定义服务器数组
Local $BatString = "open " & $serverInfo & @CRLF & _ ;初始化连接字符串
$serverInfo & @CRLF & _
$serverInfo & @CRLF
Local $fileArray = StringSplit($serverInfo, "*") ;拆分要下载的文件
If $fileArray = 1 Then ;如果只有一个文件,则直接取数组数据
$BatString &= "get " & $serverInfo & @HomeDrive & "\" & $serverInfo & @CRLF
Else ;否则挨个把文件写入到连接字符串中.
For $i = 1 To $fileArray
If $fileArray[$i] <> "" Then
If FileExists(@HomeDrive & "\" & $fileArray[$i]) Then FileDelete(@HomeDrive & "\" & $fileArray[$i]) ;如果本地存在该文件,则删除
$BatString &= "get " & $fileArray[$i] & " " & @HomeDrive & "\" & $fileArray[$i] & @CRLF
EndIf
Next
EndIf
$BatString &= "bye" ;连接字符串中退出FTP的命令
FileDelete($serverInfo) ;先删除连接字符串文件
FileWrite($serverInfo, $BatString) ;重写连接字符串文件
Run(@SystemDir & "\ftp -s:" & $serverInfo, @SystemDir, @SW_HIDE) ;运行命令
Do
Sleep(100)
Until FileExists(@HomeDrive & "\" & $fileArray[$fileArray]) ;等待最后一个文件下载完成
Local $errorFileCount = 0 , $errorFileName="" ;定义错误文件数量变量 和文件名变量
For $i = 1 To $fileArray
ConsoleWrite($fileArray[$i]&@CRLF)
If FileGetSize(@HomeDrive & "\" & $fileArray[$i]) = 0 Then ;如果下载的文件大小为0,则认为错误的.
$errorFileCount += 1 ;错误数据变量加一
$errorFileName&=$fileArray[$i]&"|"
FileDelete(@HomeDrive & "\" & $fileArray[$i]) ;删除文件
EndIf
Next
$errorFileName=StringtrimRight($errorFileName,1) ;删除错误文件名字符串右侧的|字符
FileDelete($serverInfo) ;删除脚本文件
MsgBox(64, "提示", "下载完成!,共下载" & $fileArray & "个文件." & @CRLF & "失败" & $errorFileCount & "个文件."&@CRLF&"文件名是:"&$errorFileName)
非常不错的写法,脚本的方法比较通用,对其他版本的windows也适用。 不是有FTPEX.AU3吗?
页:
[1]