如何用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).htmlDiagnostics (20240520@XYZ789)p1.htmlDiagnostics (20240520@DEF456)p2.html
内容的提问来源于stack exchange,提问作者CoalaBare
相关产品推荐
相关产品推荐

