排序文件名的子字符串,提供唯一值

时间:2018-07-02 17:40:15

标签: powershell

FWIW-我很开心“开发”这个简单的例程,它将在MP3文件的单个目录中的数百个文件列表中列出独特的艺术家。

基于模式“艺术家-title.mp3”

Get-ChildItem | ForEach-Object {($_.basename -split ("-"))[0]} | Select-Object -unique

我现在想做的是在每个唯一名称旁边都加上一个数字(例如,埃林顿公爵-多丽丝节4-6

不确定如何执行此操作,但这可能非常简单。试图使用group语句,但没有运气

佛蒙特州温德姆市的比尔·克拉克

1 个答案:

答案 0 :(得分:0)

假设所有文件都遵循该模式:

Get-ChildItem -File |
    Group-Object -Property {$_.BaseName.Split('-')[0]}

这将自动对管道中从上一项返回的所有字符串进行分组。


然后您可以通过以下方法做更多有趣的事情:

Get-ChildItem -File |
    Group-Object -Property {$_.BaseName.Split('-')[0]} |
    ForEach-Object {
        $dir = "$([IO.Path]::GetDirectoryName($_.Group[0].FullName))\$($_.Name)\"
        if (-not (Test-Path -Path $dir -PathType Container)) {
            New-Item -Path $dir -ItemType Directory
        }

        foreach ($file in $_.Group) {
            $file | Copy-Item -Destination $dir -Force
        }
}

现在,您的所有歌曲都按艺术家在文件夹中排序。