2010-07-21 61 views
0

下载文件夹,电源外壳我有一个生成并在服务器上上传文档(Word,PDF等)的Web应用程序。现在我正在编写一个power shell脚本,它将首先将这些文件传输到一个ftp文件夹。这部分完成了。第二个脚本将每天在我的备份服务器上运行,并将所有文件夹/文件从该ftp服务器下载到备份服务器。问题是我无法下载文件夹。它很容易下载文件,但我似乎找不到任何基本上允许我下载整个文件夹(包含内容)的代码,或者至少让我遍历文件夹内容。通过FTP

如果我知道文件夹的话,我会不会有问题,我可以硬编码为每个文件夹,但文件的功能被上传到动态文件夹(文件夹名称是由应用程序生成)。我只知道主文件夹。我需要遍历它。压缩并不是一个好主意,因为文件夹大小约为1 Gig。不想每天都通过电线转移1次演出。

在这方面的任何帮助,将不胜感激。

谢谢。

----------- UPDATE --------

的GCI仅适用于文件在本地系统上(我可能是错的方式在这里)。我指的是遍历ftp文件夹和文件。

继承人如何通过本地gci: $ GciFiles = gci C:\ ParentFolder \ SubFolder \ -recurse |其中{$ _。属性-ne “目录”}

的foreach($在$ GciFiles文件) {}

现在,这一切都是花花公子,因为在foreach可以给我的文件夹名称加上文件名好。不过,我想这样做与FTP代码:

$ ftphost = “ftplocation \ Parentfolder \” 这里 凭证进行ftp_web_request对象

$ ftprequest.Method = [System.Net.WebRequestMethods +的Ftp ] :: ListDirectory $ ftpresponse = $ ftprequest.GetResponse() $ responseStream = $ ftpresponse.GetResponseStream() $ readStream =新物体就是System.IO.StreamReader $ responseStream

而(($线= $ readStream .ReadLine())-ne $ null) {这里$线给我们的文件 #function名来下载文件 }

现在,这是所有罚款提供的我知道的文件夹我要下载的文件FROM.However如我之前所说,我只知道文件夹数量未知的父文件夹(它们的名称是由应用程序创建的GUID),并且每个GUID文件夹中都有一些文件。

现在如何在地球上是我该GCI该代码???

我所做的是相同的代码,首先得到每个文件夹的名称,然后有另一个功能(除了现在我知道该文件夹的名称相同),并在该功能While循环下载文件。但它不起作用。该脚本只是继续执行。我是一个深水!不知道在地球上做什么!

+0

我不确定我是否理解。 Get-ChildItem应该遍历文件夹以及文件。你能发布你如何访问你的ftp站点的代码片段吗? – tenpn 2010-07-21 18:54:32

回答

0

tenpn有它。只需使用-Recurse选项来获取ChildItem

是的,似乎采取此路线并不真正为您提供您正在寻找的功能。我怀疑有一种破解方式可以通过将服务器端的目录名称拉到一个字符串中,然后在客户端创建一个相同的目录。

说实话,虽然我觉得你可能有良好表现使用类似的net-cmdlets

我相信有一个业余爱好者的许可,或者如果你通过工作这样的完整版是在100块钱。

+0

我怎么能在一个ftp流上进行缓冲? – xeshu 2010-07-22 11:41:51