PowerShell -在使用相同名称重命名时向文件添加附录

px9o7tmv  于 12个月前  发布在  Shell
关注(0)|答案(1)|浏览(146)

因此,这将用于重命名和移动擦除硬盘驱动器的证书。大多数计算机/笔记本电脑只有一个驱动器,因此只有一个文件。但服务器和一些PC/笔记本电脑将有多个驱动器,因此将有多个文件。我需要用新名称重命名所有文件,这是我们使用的编号-让我们说34567890。所以让我们说,我有3个文件在该目录下,我需要重命名为34567890,34567890(1),34567890(2)并将它们移动到存储文件夹。我完成了大部分工作,但我不知道如何在有多个文件时重命名。下面是我的代码:

$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!"
}

字符串
我相信它必须用ForEach-Object来完成,但我无法弄清楚。

7d7tgy0s

7d7tgy0s1#

我不能完全确定我是否完全理解了这个要求,但是如果我理解正确的话,像这样的东西可能是一个起点。

$ScanID = Read-Host -Prompt 'Enter Scan ID'
$SourceFolder = 'D:\kd\cert'
$DesinationFolder = 'C:\Intel'
$Extension = '.pdf'

$Counter = 0
Get-ChildItem -Path $SourceFolder -Recurse -File |
    ForEach-Object {
        $TargetFileName = '{0}_{1:d3}{2}' -f $ScanID, $Counter, $Extension
        $TargetPath = Join-Path -Path $DesinationFolder -ChildPath $TargetFileName
        Move-Item -Path $_.FullName -Destination $TargetPath
        $Counter++
    }

字符串
目标文件名是通过格式操作符-f组合变量$ScanID$Counter$Extension创建的。然后文件名与目标目录组合成完整路径。重命名和移动操作是用Move-Item一次完成的。️🤷‍

相关问题