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

PowerShell实现同名文件重命名加后缀并移动证书文件的问题

硬盘擦除后证书文件重命名与移动脚本优化

需求说明

硬盘擦除完成后需对证书文件执行以下操作:

  • 单文件设备:将证书直接以指定扫描ID(如34567890)命名
  • 多盘服务器等多文件设备:依次命名为34567890、34567890 (1)、34567890 (2)...,完成重命名后统一移动至存储目录

现有代码问题

当前代码在处理多文件时会因重命名冲突失败,无法生成带序号的文件名,需通过ForEach-Object实现批量命名逻辑。原代码如下:

$name= Read-Host -Prompt "Enter Scan ID"
$ext='.pdf'
$fullname=$name+$ext
Get-ChildItem -Path D:\kd\cert\ -Recurse -File | Rename-Item -NewName $fullname
If(Get-Childitem -Path C:\Intel\ -Filter $fullname)
{
    Write-host "SCAN ID EXISTS"
}
Elseif((Get-ChildItem -Path D:\kd\cert\ -Force | Measure-Object).Count -eq 0)
{
    Write-host "FOLDER IS EMPTY! REPORT WAS NOT COPIED!!!"
}
Else
{
    Get-ChildItem -Path D:\kd\cert\ -Recurse -File | Move-Item -Destination C:\Intel
    Write-host "Certificate copied!"
}

优化后的代码

$scanId = Read-Host -Prompt "Enter Scan ID"
$ext = '.pdf'
$sourcePath = 'D:\kd\cert\'
$destPath = 'C:\Intel\'

# 获取所有待处理的证书文件
$certFiles = Get-ChildItem -Path $sourcePath -Recurse -File -Filter "*$ext"

# 检查源目录是否为空
if ($certFiles.Count -eq 0) {
    Write-Host "FOLDER IS EMPTY! REPORT WAS NOT COPIED!!!"
    exit
}

# 检查目标目录是否已存在基础文件名的文件
$baseFilename = "$scanId$ext"
if (Test-Path -Path (Join-Path $destPath $baseFilename)) {
    Write-Host "SCAN ID EXISTS"
    exit
}

# 批量重命名文件
$certFiles | ForEach-Object -Begin { $index = 0 } -Process {
    if ($index -eq 0) {
        $newName = $baseFilename
    } else {
        $newName = "$scanId ($index)$ext"
    }
    Rename-Item -Path $_.FullName -NewName $newName -Force
    $index++
}

# 移动重命名后的文件到目标目录
Get-ChildItem -Path $sourcePath -Recurse -File -Filter "*$ext" | Move-Item -Destination $destPath -Force
Write-Host "Certificate(s) copied successfully!"

关键优化点

  • 使用ForEach-Object遍历文件,通过索引变量生成带序号的文件名,避免多文件重命名冲突
  • 提前检查源目录空值情况与目标目录文件名冲突,减少后续执行错误
  • 拆分重命名与移动逻辑,提升脚本可读性与稳定性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 08:35:15