按特定条件订购和重命名文件?

时间:2016-09-10 19:06:43

标签: windows

所以我在一个文件夹中有很多文件(数百个),我喜欢订购它们并用自动化过程重命名它们。 这些文件的名称采用与此类似的形式:“学习Java 46578.avi”和“学习python 46579.avi”等等,每个文件名末尾的数字是连续的。 所以我的问题是我无法按字母顺序排序文件,因为每个文件都以不同的字母开头。我想要的是编写一个脚本,自动检查文件名末尾的数字,并相应地对文件进行排序和/或将这些数字放在所有文件名的开头,以便按字母顺序排序

我希望我的问题很好

谢谢

2 个答案:

答案 0 :(得分:0)

在这里,您重命名文件,以便数字在前面:

gci C:\path\*.avi | % {if($_.Name -match "([a-zA-Z ]+) ([0-9]+).avi"){Rename-Item $_ -NewName "$($Matches[2]) $($Matches[1]).avi"}}

答案 1 :(得分:0)

我认为你按字母顺序(按字母顺序排列)和数字(数字值)排序。您可以按字母顺序排序,因为它们以不同的字母开头,如果您将数字放在开头,则不能按字母顺序排序(很容易)。

  

我想要的是编写一个脚本,自动检查文件名末尾的数字并相应地订购文件

您无法在磁盘上“订购文件”,但您可以按其他顺序显示。 PowerShell允许您为管道中的每个事物计算值,然后按该值对它们进行排序。您可以删除最后一个数字,使其成为[int],然后按文件排序以显示它们:

# This sorts files by the numeric value of "the last number in the filename"

Get-ChildItem | Sort-Object -Property { $_.Name -match '(\d+)[^\d]*$'; [int]$Matches[1] } 

请注意,如果您重命名它们以将数字放在第一位,则存在“存储为字符串的数字”排序的风险,如1,11,100,2,22,200。 Windows资源管理器按数值处理排序和显示,但对于列出文件名的所有程序,情况不一定如此。