【问题标题】:Batch file - Download the latest FTP folder批处理文件 - 下载最新的 FTP 文件夹
【发布时间】:2017-05-31 05:52:07
【问题描述】:

我正在尝试从 FTP 服务器下载最新的文件夹。此文件夹包含多个文件夹,其中包含多个 CSV 文件。

我遇到的问题是每天都会创建文件夹,并且每次运行脚本时我只希望它下载该位置的最新文件夹。

我不知道如何指定它,甚至使用批处理文件从 FTP 下载整个文件夹结构。

如果需要任何其他信息,请告诉我,我会立即提供,再次感谢您的帮助。

亲切的问候,
刘易斯

【问题讨论】:

  • 你怎么知道,什么是“最新文件夹”?通过名称或时间戳?或者您是否在本地拥有所有过去的文件夹,并且您想下载服务器上尚未在本地存在的所有新文件夹?
  • 嗨马丁,这些文件夹将在服务器上加上时间戳,它们不会保存在本地。 (除非这是必要的)。

标签: batch-file ftp


【解决方案1】:

使用内置 Windows FTP 客户端 ftp.exe 选择最近的文件夹并不容易。使用 PowerShell 脚本和 FtpWebRequest 会更幸运。

但即使您设法选择了最近的目录,ftp.exeFtpWebRequest 也不支持递归下载。

你最好使用一些更强大的 3rd 方 FTP 客户端。


例如使用WinSCP FTP client,您可以使用get command(WinSCP 5.9 和更新版本)的-latest 开关下载最新的文件或文件夹:

winscp.com /command ^
    "open ftp://username:password@ftp.example.com/" ^
    "cd /remote/path" ^
    "lcd c:\local\path" ^
    "get -latest *" ^
    "exit"

另请参阅downloading the most recent file with WinSCP 的指南。

(我是 WinSCP 的作者)

【讨论】:

  • 谢谢马丁,我很欣赏这个建议,我试试看。
  • @Martin Prikryl 谢谢,但是这对我不起作用,因为它下载的是最后一个文件,而不是最新的文件夹...你对最新的 文件夹有什么建议吗? (另外,我的文件夹有时间戳,有帮助吗?)
  • @JejeBelfort 你的意思是你的源文件夹中也有文件,但你想从“最新”条目的评估中排除这些文件吗?
  • @MartinPrikryl 是的,正确!最后我找到了另一个可行的解决方案,我只是调用了一个 .vbs 脚本,返回昨天的日期(即我要复制的文件夹的名称)并将其传递给 get 函数。谢谢
  • @JejeBelfort WinSCP 可以自行计算昨天的日期:get prefix%TIMESTAMP-1D#yyyy-mm-dd%suffix - 请参阅 winscp.net/eng/docs/scripting#timestamp
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
  • 1970-01-01
  • 1970-01-01
  • 2017-02-19
  • 1970-01-01
相关资源
最近更新 更多