WinSCP基于时间的文件下载

Rho*_*odo 2 scripting command-line timestamp download winscp

我想编写WinSCP脚本来下载每天早上4-4:30之前放在远程服务器上的文件.有没有办法用时间戳来做到这一点?

我想伪代码:

get file.txt where timestap<1 hour from 4 am
Run Code Online (Sandbox Code Playgroud)

Mar*_*ryl 5

首先,我假设您的文件没有固定名称(与您的固定名称相反file.txt).如果没有,请解释一下,为什么需要基于时间戳的解决方案.


无论如何,您可以使用具有时间约束文件掩码:

get "*.txt>2014-07-19 4:00"
Run Code Online (Sandbox Code Playgroud)

要动态注入今天的日期,请使用以下%TIMESTAMP%语法:

get "*.txt>%TIMESTAMP#yyyy-mm-ss% 4:00"
Run Code Online (Sandbox Code Playgroud)

简单地说,上述方法是,获取今天晚于4:00创建的所有文件(根据时间限制需要,%TIMESTAMP#yyyy-mm-ss%以格式解析为今天的日期yyyy-mm-ss).

get批处理文件中传递WinSCP命令行时(使用/commandswitch,与使用/scriptswitch指定单独的脚本文件相反),您必须加倍%以避免批处理文件尝试解释%TIMESTAMP%:

winscp.com /command ... "get ""*.txt>%%TIMESTAMP#yyyy-mm-ss%% 4:00"""
Run Code Online (Sandbox Code Playgroud)

另一个解决方案是依赖于相对时间的静态脚本:例如,您知道您的脚本在早上6点运行.所以你让WinSCP下载在过去2小时(早上6点 - 凌晨4点)更新/创建的所有文件:

get *.txt>2h
Run Code Online (Sandbox Code Playgroud)

另请参阅有关下载最新文件的 WinSCP文章.