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

标签 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 抓取的文件并运行我的检查。

最佳答案

没有简单的方法可以使用 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:<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="66160715152600121648150f12034805090b" rel="noreferrer noopener nofollow">[email protected]</a>/" ^
        "lcd c:\my\local\direc" ^
        "get *>=1D" ^
        "exit"
    
  • 如果您确实需要下载最新文件(按时间戳),您可能需要一些更高级的脚本。

    例如,有一个适用于 downloading the most recent file with WinSCP 的指南.

    (我是 WinSCP 的作者)

关于excel - 从 FTP 站点获取最新文件的批处理/宏代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32353408/

相关文章:

vba - 用户窗体标签外部字体(woff2 文件)

excel - VBA Worksheet_Change 仅适用于一个单元格

batch-file - 如何使用批处理脚本创建没有新行的空文件?

php - 导出为 csv 时不计算公式

vba - 有没有办法在Excel中隐藏宏?

vba - 如何使用 VBA 在 Excel 中更改图表的范围?

vba - 带有千位分隔符和小数(如果需要)的数字格式

java - 无法识别“javac”且未找到 rmiregistry

python - 在 Windows 上的 os.system 中转义双引号

VBA 将文件夹中的 csv 文件转换为 xlsx 文件