2

我想编写 WinSCP 脚本来下载一个文件,该文件每天早上 4 点到 4 点 30 分之间放置到远程服务器上。有没有办法通过时间戳来做到这一点?

我想伪代码:

get file.txt where timestap<1 hour from 4 am
4

1 回答 1

5

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


无论如何,您可以使用具有时间限制的文件掩码

get "*.txt>2014-07-19 4:00"

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

get "*.txt>%TIMESTAMP#yyyy-mm-ss% 4:00"

简单地说,上面的意思是,获取今天 4:00 之后创建的所有文件(根据时间限制的需要,%TIMESTAMP#yyyy-mm-ss%解析为今天的日期格式yyyy-mm-ss)。

在批处理文件中传递geton WinSCP 命令行时(使用/command开关,与使用/script开关指定单独的脚本文件相反),您必须加倍%以避免批处理文件试图解释%TIMESTAMP%

winscp.com /command ... "get ""*.txt>%%TIMESTAMP#yyyy-mm-ss%% 4:00"""

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

get *.txt>2h

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

于 2013-05-13T08:19:34.203 回答