批处理问题 从ftp上下载指定文件
一个批处理问题 从ftp上拷贝文件 若服务器上有aaa_20111003.txt,aaa_20111003.ctl,bbb_20111104.txt,bbb_20111104.ctl
ccc_20111105.txt.每个ctl对应一个相同文件名的.txt文件,若服务器上没有相应的ctl文件的话,对应的txt文件则不下载,若存在ctl,则下载对应的txt文件.下载完后则删除下载的文件和对应的ctl文件
ftp下载后的期望结果是只下载aaa_20111003.txt和bbb_20111104.txt这两个文件
请问各位有什么好的方法实现吗?
[解决办法]
写ftp脚本呗,但我没时间写出来。
大致是把文件列表取下来。
然后,分析文件列表,用批处理生成脚本去下载和删除指定的文件。
如果是我自己就用powershell写一个ftp客户端脚本去做这件事情。
#获取文件列表$listFTP = [system.net.ftpwebrequest] [system.net.webrequest]::create("ftpurl")$listFTP.UseBinary = $true;$listFTP.Credentials = New-Object System.Net.NetworkCredential("username","password")$listFTP.Method=[system.net.WebRequestMethods+ftp]::listdirectorydetails$listFTP.Timeout=2000$listFTP.ReadWriteTimeout=2000$response = $listFTP.getresponse()$stream = New-Object System.Io.StreamReader($response.getresponsestream(),[System.Text.Encoding]::UTF8)while(-not $stream.EndOfStream){$stream.ReadLine()}$stream.Close()$response.Close()#上传文件$fileinf=New-Object System.Io.FileInfo("localfilename")$upFTP = [system.net.ftpwebrequest] [system.net.webrequest]::create("ftpurl"+$fileinf.name)$upFTP.UseBinary = $true;$upFTP.Credentials = New-Object System.Net.NetworkCredential("username","password")$upFTP.Method=[system.net.WebRequestMethods+ftp]::UploadFile$upFTP.KeepAlive=$false$sourceStream = New-Object System.Io.StreamReader($fileInf.fullname)$fileContents = [System.Text.Encoding]::UTF8.GetBytes($sourceStream.ReadToEnd())$sourceStream.Close();$upFTP.ContentLength = $fileContents.Length;$requestStream = $upFTP.GetRequestStream();$requestStream.Write($fileContents, 0, $fileContents.Length);$requestStream.Close();$response =$upFTP.GetResponse();$response.StatusDescription$response.Close(); #ftpurl:ftp路径#username:ftp用户名#password:ftp密码#localfilename:要上传的文件名下载和续传因为没有业务需求所以没做出来,日后有心情再做