You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell压缩文件时如何筛选文件名匹配的关联PDF与XML文件

PowerShell压缩文件时如何筛选文件名匹配的关联PDF与XML文件

嗨,我完全懂你的需求——你现在需要把那些文件名里带有相同数字串的PDF和XML配对起来,只打包这些关联文件,对吧?咱们一步步来搞定这个问题:

首先,先理清楚文件名的规律:你的PDF是aaa_bb_cc_123456789.pdf格式,对应的XML是123456789.xml,核心就是要提取PDF文件名最后下划线后面的数字部分,然后找到文件名完全等于这个数字的XML文件。

具体实现步骤

  1. 先筛选出符合时间、数量要求的PDF文件,同时提取每个PDF的匹配ID(就是文件名末尾的那串数字)
  2. 预先收集所有符合时间条件的XML文件,方便快速查找
  3. 把PDF和对应的XML配对,收集所有需要打包的文件
  4. 最后执行压缩操作

完整代码示例

# 定义你的源路径、数量和时间参数(替换成你实际的值)
$SourcePath = "C:\Your\Source\Directory"
$quantity = 10  # 你要选的文件数量
$time = 30      # 最后修改时间小于当前时间减去X分钟

# 第一步:筛选PDF并提取匹配ID
$pdfFiles = Get-ChildItem -Path $SourcePath -Include "*.pdf" | 
    Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes($time)} |
    Select-Object -First $quantity |
    ForEach-Object {
        # 拆分PDF文件名,取最后一段(也就是数字ID)
        $matchID = $_.BaseName -split '_' | Select-Object -Last 1
        # 返回包含文件和匹配ID的自定义对象
        [PSCustomObject]@{
            File = $_
            MatchID = $matchID
        }
    }

# 第二步:收集所有符合时间条件的XML文件
$allXmlFiles = Get-ChildItem -Path $SourcePath -Include "*.xml" |
    Where-Object {$_.LastWriteTime -lt (Get-Date).AddMinutes($time)}

# 第三步:配对PDF和XML,收集要打包的文件
$filesToZip = @()
foreach ($pdf in $pdfFiles) {
    # 查找文件名等于匹配ID的XML文件
    $matchingXml = $allXmlFiles | Where-Object {$_.BaseName -eq $pdf.MatchID}
    if ($matchingXml) {
        # 如果找到对应XML,就把PDF和XML都加入打包列表
        $filesToZip += $pdf.File
        $filesToZip += $matchingXml
    }
}

# 第四步:执行压缩(-Update参数可以避免重复打包已存在的文件,按需调整)
if ($filesToZip.Count -gt 0) {
    Compress-Archive -Path $filesToZip -DestinationPath "C:\Your\Target\Archive.zip" -Update
    Write-Host "成功打包了$($filesToZip.Count)个文件"
} else {
    Write-Host "没有找到符合条件的配对文件"
}

额外说明

  • 如果你的数字ID格式有变化(比如不是下划线分隔,或者长度固定),可以调整-split '_'这部分逻辑,比如用正则表达式提取数字:$matchID = [regex]::Match($_.BaseName, '\d+$').Value(这个正则会匹配文件名末尾的所有数字)
  • 如果存在多个XML对应同一个ID的情况,可以在$matchingXml后面加| Select-Object -First 1来只取第一个匹配的XML
  • 代码里加了判断$filesToZip.Count -gt 0,避免空列表导致压缩出错

备注:内容来源于stack exchange,提问作者seagull46

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 08:49:28