批处理有关问题 从ftp上下载指定文件
批处理问题 从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客户端脚本去做这件事情。
一个批处理问题 从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客户端脚本去做这件事情。
- C# code
#获取文件列表 $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:要上传的文件名 下载和续传因为没有业务需求所以没做出来,日后有心情再做