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

Add special prefix to all files in directory

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

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

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

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

试试这个:

$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 作为完全避免全局 vs 脚本范围问题的好方法:

$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 和 运行 以实际重命名文件。