繁体   English   中英

如何修改批处理文件以从 S3 获取两个最后修改的文件?

[英]How to modify the batch file to get two last modified files from S3?

我目前有一个 bat 文件,它将最后修改的文件从 AWS S3 存储桶复制到本地文件夹。

for /f "delims=" %%i in ('aws s3api list-objects-v2 --bucket example.sftp --prefix data/ --query "sort_by(Contents, &LastModified)[-1].Key" --output text') do set object=%%i
aws s3 cp s3://example.sftp/%object% E:\DATA_S3

我想修改它以在按上次修改而不是一个排序时获得两个文件。 [-1]更改为[-2]无效。

JMESPath 使用 Python 语法来引用列表,所以使用:

--query "sort_by(Contents, &LastModified)[-2:].Key"

这意味着“从倒数第二个元素到列表末尾”。

我强烈推荐JMESPath 教程,其中包括命令的交互式测试。 我使用那个页面测试了这个概念。

您可以使用 JMESPath 查询通过[-2:]获取最近的两个项目,然后依次对每个项目进行操作。 请注意,在路径中,不要使用.Key ,而是使用.[Key] ,这会导致 AWS CLI 的文本 output 以换行符而不是制表符分隔,从而允许批处理文件的for运算符轻松解析:

for /f "delims=" %%i in ('aws s3api list-objects-v2 --bucket example-bucket --prefix target/prefix/ --query "sort_by(Contents, &LastModified)[-2:].[Key]" --output text') do (
    aws s3 cp s3://example-bucket/%%i folder\to\copy\to
)
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2023 STACKOOM.COM