如何通过WinSCP脚本仅从SFTP服务器下载当日创建的文件?
解决WinSCP脚本仅下载当日创建文件的方案
我来帮你搞定这个每日仅下载当日创建文件的需求!问题出在你之前的filemask没用到WinSCP的时间筛选规则,下面给你具体的解决方法:
核心思路
WinSCP的synchronize命令支持通过filemask结合时间条件筛选文件,关键是用内置的时间戳变量动态获取当日日期,再指定筛选创建时间符合条件的文件。
修改后的完整脚本片段
open sftp://location.net -passphrase="passphrase" -hostkey="key" # 替换成你的本地目标路径和远程源路径 synchronize local "D:/Local/Download/Path" "/Remote/Source/Path" -filemask="C>=%TIMESTAMP#yyyy-mm-dd%" close exit
关键参数解释
C>=:这里的C代表文件创建时间,如果你的需求是按修改时间筛选,换成M>=即可;>=表示筛选时间大于等于指定日期的文件%TIMESTAMP#yyyy-mm-dd%:WinSCP内置的时间戳变量,会自动生成脚本运行当日的日期(格式为年-月-日),每天运行时都会自动适配当天的日期,不用手动修改- 如果你想先验证筛选结果(避免误下载),可以加上
-dryrun参数,它会模拟同步过程并显示要下载的文件,不会实际写入本地:synchronize local "D:/Local/Download/Path" "/Remote/Source/Path" -filemask="C>=%TIMESTAMP#yyyy-mm-dd%" -dryrun
注意事项
- 确保远程SFTP服务器能正确返回文件的创建时间,部分服务器可能只暴露修改时间,如果遇到这种情况,建议改用
M>=按修改时间筛选 - 路径要注意格式:本地路径用Windows格式(比如
D:/xxx或D:\xxx),远程路径用Unix格式(比如/xxx/xxx)
内容的提问来源于stack exchange,提问作者Pablo prez
相关产品推荐
相关产品推荐

