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

如何用PowerShell脚本按特征文件名转移更新的诊断文件

解决方案

1. PowerShell核心逻辑脚本

以下脚本可实现提取最新文件的批次编码、匹配同批次文件并完成转移:

# 替换为实际的源文件夹和目标文件夹路径
$sourcePath = "C:\你的源文件夹路径"
$targetPath = "C:\你的目标文件夹路径"

# 获取最新的Diagnostics开头的HTML文件
$latestFile = Get-ChildItem -Path $sourcePath -Filter "Diagnostics *.html" | Sort-Object LastWriteTime -Descending | Select-Object -First 1

if (-not $latestFile) {
    Write-Host "未找到任何Diagnostics格式文件"
    exit 1
}

# 用正则提取@后的批次编码(兼容带p1/p2后缀的文件名)
if ($latestFile.Name -match '@([^.)]+)') {
    $batchCode = $matches[1]
    Write-Host "提取到批次编码: $batchCode"

    # 筛选所有包含该批次编码的HTML文件
    $filesToMove = Get-ChildItem -Path $sourcePath -Filter "*.html" | Where-Object { $_.Name -match "@$batchCode" }

    if ($filesToMove.Count -eq 0) {
        Write-Host "未找到同批次编码的文件"
        exit 1
    }

    # 自动创建目标文件夹(若不存在)
    if (-not (Test-Path -Path $targetPath)) {
        New-Item -Path $targetPath -ItemType Directory | Out-Null
    }

    # 执行文件移动
    foreach ($file in $filesToMove) {
        Move-Item -Path $file.FullName -Destination $targetPath -Force
        Write-Host "已移动: $($file.Name)"
    }
} else {
    Write-Host "无法从最新文件中提取批次编码"
    exit 1
}

2. 封装为可执行BAT文件

将上述PowerShell逻辑封装成BAT文件,双击即可运行。创建MoveDiagnostics.bat文件,内容如下:

@echo off
powershell -ExecutionPolicy Bypass -Command "& {
    $sourcePath = 'C:\你的源文件夹路径'
    $targetPath = 'C:\你的目标文件夹路径'
    $latestFile = Get-ChildItem -Path $sourcePath -Filter 'Diagnostics *.html' | Sort-Object LastWriteTime -Descending | Select-Object -First 1
    if (-not $latestFile) { Write-Host '未找到任何Diagnostics格式文件'; exit 1 }
    if ($latestFile.Name -match '@([^.)]+)') {
        $batchCode = $matches[1]
        Write-Host '提取到批次编码: ' $batchCode
        $filesToMove = Get-ChildItem -Path $sourcePath -Filter '*.html' | Where-Object { $_.Name -match "@$batchCode" }
        if ($filesToMove.Count -eq 0) { Write-Host '未找到同批次编码的文件'; exit 1 }
        if (-not (Test-Path -Path $targetPath)) { New-Item -Path $targetPath -ItemType Directory | Out-Null }
        foreach ($file in $filesToMove) {
            Move-Item -Path $file.FullName -Destination $targetPath -Force
            Write-Host '已移动: ' $file.Name
        }
    } else {
        Write-Host '无法从最新文件中提取批次编码'
        exit 1
    }
}"
pause

3. 使用注意事项

  • 务必修改BAT文件中的$sourcePath和$targetPath为实际的文件夹路径,路径包含空格时无需额外转义,保持单引号包裹即可。
  • 正则表达式@([^.)]+)可兼容以下文件名格式:
    • Diagnostics (20240520@ABC123).html
    • Diagnostics (20240520@XYZ789)p1.html
    • Diagnostics (20240520@DEF456)p2.html

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 15:10:43