为目录中的所有文件添加特殊前缀

时间:2015-10-24 18:14:09

标签: windows powershell batch-rename

我有一个目录,其中包含一定数量的mp3文件,这些文件按名称排序,例如:

Artist.mp3
Another artist.mp3
Bartist.mp3
Cool.mp3
Day.mp3

如何为每个文件添加一个唯一的连续3位数前缀,但是以随机顺序排列,以便按名称排序时,它看起来像这样:

001 Cool.mp3
002 Artist.mp3
003 Day.mp3
...

1 个答案:

答案 0 :(得分:3)

试试这个:

$files = Get-ChildItem -File
$global:i = 0; Get-Random $files -Count $files.Count | 
    Rename-Item -NewName {"{0:000} $($_.Name)" -f ++$global:i} -WhatIf

或者在极少数情况下文件名包含花括号: - ):

$files = Get-ChildItem -File
$global:i = 0; Get-Random $files -Count $files.Count | 
    Rename-Item -NewName {("{0:000} " -f ++$global:i) + $_.Name} -WhatIf

或者正如@PetSerAl建议的那样,使用[ref]$i作为避免全局和脚本范围问题的好方法:

$files = Get-ChildItem -File
$i = 0; Get-Random $files -Count $files.Count | 
    Rename-Item -NewName {"{0:000} {1}" -f ++([ref]$i).Value, $_.Name} -WhatIf

如果输出看起来不错,请删除-WhatIf并再次运行以实际重命名文件。