我使用以下脚本重命名目录中的文件。它可以将文件重命名为BX1,BX2 ... BXn。但是,我希望它将此新名称添加到现有文件名中。
$i = 1; dir *.txt | %{Rename-Item $_ -NewName ('BX{0:D4}.txt' -f $i++)}
换句话说,我想要
显示为
我尝试更改为'BX{0:D4}.txt'+ $_.Name
或'BX{0:D4}.txt'+ $_.FullName
或'BX{0:D4}.txt'+ $_.Directory.Name
但接收到的消息显示无法重命名指定的目标,因为它代表路径或设备名称。
答案 0 :(得分:4)
您可以使用BaseName
属性和其他格式:
$i = 1; dir *.txt | %{Rename-Item $_ -NewName ('BX{1:D4} {0}.txt' -f $_.BaseName, $i++)}
此外,您可以使用ForEach-Object cmdlet的-Begin
参数来初始化变量:
Get-ChildItem *.txt |
ForEach-Object -Begin{ $i = 1; } -Process {
Rename-Item $_ -NewName ('BX{1:D4} {0}.txt' -f $_.BaseName, $i++)
}