批处理/宏代码从FTP站点获取最新文件

时间:2015-09-02 12:38:36

标签: excel vba batch-file ftp command-prompt

我们有一个共享的FTP站点,每天都有文件上传,我需要下载并运行检查。我只是想尝试自动化这个过程。 FTP文件类似于name_20150901.xml

到目前为止,我有一个批处理文件来获取文件,但我无法弄清楚如何获取最新信息。这是我的代码:

@ftp -i -s:"%~f0"&GOTO:EOF
open ftp.site.com
<user>
<pass>
lcd my local direc
binary
get todaysfile_20150901.xml

我需要进行哪些更改才能阅读文件并获取最新文件?我的最终目标是让一个宏调用它,然后读取从FTP中获取并运行我的检查的文件。

1 个答案:

答案 0 :(得分:3)

使用ftp.exe选择最新文件并不容易。

  • 如果您知道该文件具有今天的时间戳,则可以使用今天的时间戳动态生成脚本。您可以使用DATE环境变量,尽管它有其警告。更可靠(也更复杂)的方法是使用wmic os get LocalDateTime

    请参阅How to get current datetime on Windows command line, in a suitable format for using in a filename?

  • 如果您可以按字母顺序确定最新文件,则可以:

    • 运行ftp.exe并将ls命令重定向到文件
    • 按字母顺序按降序对文件进行排序
    • 阅读第一行
    • 为第二个ftp.exe运行
    • 生成下载脚本
  • WinSCP可以下载过去24小时(1天)内创建的文件:

    winscp.com /command ^
        "open ftp://user:pass@ftp.site.com/" ^
        "lcd c:\my\local\direc" ^
        "get *>=1D" ^
        "exit"
    
  • 如果您确实需要下载最新文件(按时间戳),则可能需要更高级的脚本。

    例如,有downloading the most recent file with WinSCP的指南。

    (我是WinSCP的作者)

相关问题