批处理运行azcopy复制CSV文件到Azure Blob存储的执行问题求助
问题根因与解决方案
1. 本地文件识别不全、批处理执行失败/CMD运行跳文件问题
核心原因是当前使用的SAS令牌仅有写入(w)权限,azcopy无法读取目标Blob存储的现有文件列表,无法完成本地与远端的文件比对,无法判定哪些是新增文件。
对应修复步骤:
- 重新生成SAS令牌,新增读取(r)权限,确保azcopy可枚举目标容器的现有Blob
- 优化批处理命令写法,避免通配符解析冲突,替换原有命令为:
:: 先切换到本地CSV文件目录,避免路径解析错误 cd /d "E:\SISTEMA\KORRENET\CSV" :: 建议填写azcopy的绝对路径,避免任务计划程序找不到执行文件,可替换为实际路径 "C:\替换为你的azcopy实际路径\azcopy.exe" cp "E:\SISTEMA\KORRENET\CSV" "https://x.blob.core.windows.net/data?sp=rw&st=2021-07-27T23:15:58Z&se=2022-12-31T07:15:58Z&spr=https&sv=2020-08-04&sr=c&sig=替换为你重新生成的SAS签名%%3D" --include-pattern="*.CSV" --overwrite=false --recursive=false :: 可选:添加日志输出,方便后续排查问题 :: "C:\替换为你的azcopy实际路径\azcopy.exe" cp 上述参数 >> C:\azcopy_run_log.txt 2>&1
- 检查任务计划程序的执行身份,确保该账户拥有本地CSV目录的读取权限、azcopy工具的执行权限
2. Blob存在租约报错问题
报错的2个Blob已被设置活跃租约,未携带租约ID的请求无法修改对应Blob:
- 若不需要覆盖这两个现有Blob,可直接在命令中添加
--exclude-path="文件名1.csv;文件名2.csv"参数跳过对应文件 - 若需要更新这两个Blob,需先到Azure存储账户中释放对应Blob的租约,或在命令中添加
--lease-id=<对应Blob的租约ID>参数
3. 任务计划程序执行批处理失败补充排查点
- 确认任务计划程序的「安全选项」设置为「使用最高权限运行」,避免权限不足
- 确认任务的「起始于」路径设置为批处理文件所在的目录,避免相对路径解析错误
内容的提问来源于stack exchange,提问作者Jose A
相关产品推荐
相关产品推荐

