如何修改批处理文件从AWS S3获取最后修改的两个文件?
解决AWS S3批量复制最后两个修改文件的批处理脚本问题
原脚本仅能获取最后1个文件,要实现获取最后2个文件的需求,需调整JMESPath查询语法并优化循环处理逻辑:
修改后的批处理代码
@echo off for /f "delims=" %%i in ('aws s3api list-objects-v2 --bucket example.sftp --prefix data/ --query "sort_by(Contents, &LastModified)[-2:].Key" --output text') do ( aws s3 cp "s3://example.sftp/%%i" "E:\DATA_S3" )
关键修改说明
- JMESPath查询调整:将
[-1].Key改为[-2:].Key,[-2:]是JMESPath的切片语法,代表取排序后列表的最后2个元素;而你之前用的[-2]仅会提取倒数第2个元素,这就是修改后无法实现需求的核心原因。 - 循环逻辑优化:直接在for循环体内执行复制命令,避免单个变量被多次覆盖的问题,确保每个返回的文件Key都能被单独处理。
额外提示
如果存储桶内符合条件的文件不足2个,脚本会自动复制所有现有符合条件的文件,不会触发报错。
内容的提问来源于stack exchange,提问作者rocky_alpine
相关产品推荐
相关产品推荐

