You need to enable JavaScript to run this app. 如何使用PowerShell将匹配的压缩包复制到对应目录并解压?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PowerShell将匹配的压缩包复制到对应目录并解压?

PowerShell匹配编号压缩包与文件夹并解压的实现方案

你当前定义$R = "136" ; "287"的写法存在错误,实际执行后$R仅会被赋值为"136",第二个字符串"287"会直接输出到控制台,不会存入变量,需要先将待匹配编号改为数组格式。

完整实现逻辑如下:

  • 第一步:定义基础配置,包括待处理编号数组、备份根目录路径
  • 第二步:遍历所有zip压缩包,匹配对应编号的子文件夹
  • 第三步:将压缩包复制到对应子文件夹,执行解压操作
# 定义需要处理的编号数组
$targetIds = @("136", "287")
# 定义备份根目录路径
$backupRoot = "\\rossfsscan\scanning\ejbackup\"

# 遍历所有目标编号
foreach ($id in $targetIds) {
    # 获取当前编号对应的zip压缩包
    $zipFile = Get-ChildItem -Path $backupRoot -Filter "*$id*.zip" -File | Select-Object -First 1
    # 获取当前编号对应的子文件夹
    $targetDir = Get-ChildItem -Path $backupRoot -Filter "*$id*" -Directory | Select-Object -First 1

    # 跳过匹配不到压缩包或文件夹的编号
    if (-not $zipFile -or -not $targetDir) {
        Write-Warning "编号$id 未匹配到对应压缩包或文件夹,跳过处理"
        continue
    }

    # 复制压缩包到目标文件夹,需要移动的话替换为Move-Item即可
    Copy-Item -Path $zipFile.FullName -Destination $targetDir.FullName -Force

    # 执行解压操作,-Force参数可覆盖已存在的同名文件,不需要可以删除
    Expand-Archive -Path (Join-Path $targetDir.FullName $zipFile.Name) -DestinationPath $targetDir.FullName -Force

    # 如果解压完成后不需要保留子文件夹内的压缩包,可以取消注释下面一行删除
    # Remove-Item -Path (Join-Path $targetDir.FullName $zipFile.Name) -Force
}

注意事项

  • 如果你的编号规则是文件名/文件夹名仅前缀为纯数字编号,可以把匹配逻辑替换为正则提取,避免模糊匹配出现错误,比如只匹配文件名开头的数字作为编号:$id = [regex]::Match($zipFile.Name, '^\d+').Value
  • PowerShell 5.1及以上版本原生支持Expand-Archive命令,低版本需要单独安装相关模块

内容的提问来源于stack exchange,提问作者Viktor Kursinszki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 10:27:02