使用Powershell如何递归地批量重命名文件并在新名称中包含计数器?

时间:2014-12-16 15:47:59

标签: powershell

我有一个项目,我需要在包含特定字符串的多个子文件夹中搜索多个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'循环?

2 个答案:

答案 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++
}