首页 文章

通过ftp下载文件夹的电源外壳

提问于
浏览
0

我有一个Web应用程序,可以在服务器上生成和上传文档(word,pdf等) . 现在我正在编写一个电源shell脚本,它将首先将这些文件传输到ftp文件夹 . 这部分完成了 . 第二个脚本将每天在我的备份服务器上运行,并将该ftp服务器中的所有文件夹/文件下载到我的备份服务器 . 问题是我无法下载文件夹 . 它很容易下载文件,但我似乎无法找到任何基本上让我下载整个文件夹(带内容)或至少让我遍历文件夹内容的代码 .

如果我知道文件夹然后我就不会有问题,我可以为每个文件夹硬编码一个函数,但文档会上传到动态文件夹(文件夹名称由应用程序生成) . 我只知道主文件夹 . 我需要迭代它 . 压缩不是一个好主意,因为文件夹大小约为1千兆 . 不想每天通过电线传输1个演出 .

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

谢谢 .

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

gci仅适用于本地系统上的文件(我可能在这里错了) . 我指的是迭代ftp文件夹和文件 .

下面是我如何通过本地gci:$ GciFiles = gci C:\ ParentFolder \ SubFolder \ -recurse |其中{$ _ . attributes -ne“Directory”}

foreach($ GciFiles文件){}

现在这都是花花公子,因为foreach可以给我文件夹名称和文件名 . 但是我想对FTP代码做同样的事情:

$ ftphost =“ftplocation \ Parentfolder \”凭据在这里创建一个ftp_web_request对象

$ ftprequest.Method = [System.Net.WebRequestMethods Ftp] :: ListDirectory $ ftpresponse = $ ftprequest.GetResponse()$ responseStream = $ ftpresponse.GetResponseStream()$ readStream = new-object System.IO.StreamReader $ responseStream

while(($ line = $ readStream.ReadLine())-ne $ null){$ line这里给出了文件的名称#function to download the file}

现在这一切都很好提供我知道我想要下载文件的文件夹 . 但是正如我之前所说,我只知道文件夹数量未知的父文件夹(它们的名称是应用程序创建的GUID)和每个GUID文件夹有一些文件 .

现在,我觉得GCI对该代码有什么影响?

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

1 回答

  • 0

    tenpn有它 . 只需使用Get-ChildItem的-Recurse选项即可

    是的,看起来采取这种方式并不能真正为您提供所需的功能 . 我怀疑通过将服务器端的目录名称拉入字符串然后在客户端创建相同的目录,可以解决这个问题 .

    说实话,我觉得你可能会更好用net-cmdlets这样的东西

    我相信有一个业余爱好者的许可证,或者如果你通过工作这样做,那么完整版本的价格低于100美元 .

相关问题