如何使用powershell为文件名添加连续编号的前缀?

时间:2016-05-18 13:54:43

标签: powershell

我使用以下脚本重命名目录中的文件。它可以将文件重命名为BX1,BX2 ... BXn。但是,我希望它将此新名称添加到现有文件名中。

$i = 1; dir *.txt | %{Rename-Item $_ -NewName ('BX{0:D4}.txt' -f $i++)}

换句话说,我想要

  • Apple.txt
  • Dog.txt
  • Zebra.txt

显示为

  1. BX001 Apple.txt
  2. BX002 Dog.txt
  3. BX003 Zebra.tx
  4. 我尝试更改为'BX{0:D4}.txt'+ $_.Name'BX{0:D4}.txt'+ $_.FullName'BX{0:D4}.txt'+ $_.Directory.Name但接收到的消息显示无法重命名指定的目标,因为它代表路径或设备名称。

1 个答案:

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