我有一个项目,我需要在包含特定字符串的多个子文件夹中搜索多个pdf,然后使用计数器变量重命名它们。我是一个非常新手的PowerShell用户,但我认为我已经非常接近了。唯一不起作用的是柜台。计数器变量永远不会改变。这是我到目前为止的代码:
$prefix = "sample"
$id = 1
Get-ChildItem -Filter "*combined*" -Recurse | Rename-Item -NewName ($prefix + ($id.tostring("000")) + '_regular_' + ($id.tostring("000")) + '.pdf' -f $id++ )
我错过了什么?我应该使用' foreach'循环?
答案 0 :(得分:0)
是的,您需要使用ForEach
循环。这将通过并重命名,确保在重命名后在子目录中找到的任何文件都保留在这些目录中
Get-ChildItem -Filter "*combined*" -Recurse | %{
$fullId = $id.toString("000")
$curPath = Split-Path $_.FullName
Rename-Item $_.fullname -NewName "$curPath\$($prefix)$($fullId)_regular_$($fullId).pdf" )
$id += 1
}
答案 1 :(得分:-1)
以下是我编辑的上述代码版本:
$id = 1
Get-ChildItem -Filter "*combined*" -Recurse | %{
$fullId = $id.toString("000")
$curPath = Split-Path $_.FullName
Rename-Item $_.fullname -NewName "$curPath\$($prefix)_$($fullId)_regular_$($fullId).pdf"
$id++
}