PowerShell批量提取txt ID生成azcopy多匹配参数减少循环次数
实现方案
直接用PowerShell的数组分段能力即可完成批量分组,无需复杂的-skip参数操作,完整实现代码如下:
# 读取所有ID,自动过滤空行避免无效规则 $liste = Get-Content "C:\x\input.txt" | Where-Object { $_ -notmatch '^\s*$' } # 单次批量处理的最大ID数,匹配azcopy上限 $batchSize = 300 for ($i = 0; $i -lt $liste.Count; $i += $batchSize) { # 提取当前批次ID,自动适配最后一批不足300的场景 $currentBatch = $liste[$i..([Math]::Min($i + $batchSize - 1, $liste.Count - 1))] # 拼接为azcopy要求的匹配规则格式 $includePattern = ($currentBatch | ForEach-Object { "*$_*" }) -join ';' # 执行拷贝 azcopy copy $source $target --include-pattern $includePattern --recursive=true }
逻辑说明
- 读取ID阶段额外过滤空行,避免生成无效匹配规则导致azcopy报错
- 按固定步长遍历ID数组,无需额外维护偏移量参数
- 自动处理最后一批ID不足300的边界场景,不会出现数组越界问题
- 生成的匹配规则完全符合azcopy的参数格式要求,无需手动调整分隔符和通配符
内容的提问来源于stack exchange,提问作者Julian
相关产品推荐
相关产品推荐

