我有一个目录,其中包含一定数量的mp3文件,这些文件按名称排序,例如:
Artist.mp3
Another artist.mp3
Bartist.mp3
Cool.mp3
Day.mp3
如何为每个文件添加一个唯一的连续3位数前缀,但是以随机顺序排列,以便按名称排序时,它看起来像这样:
001 Cool.mp3
002 Artist.mp3
003 Day.mp3
...
答案 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
并再次运行以实际重命名文件。