我们有一个共享的 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/