Anda dapat menggunakan PowerShell!
$dupes = gi $args[0] | gci -File -Recurse | group Name | ? {$_.Count -gt 1}
gi $args[0] | gci -Directory | ? {
$allDupes = $true
$hasAny = $false
$_ | gci -File | % {
$folder = $_
$hasAny = $true
If (!($dupes | ? {$_.Name -eq $folder.Name})) {$allDupes = $false}
}
$allDupes -and $hasAny
}
Script ini sedikit rumit, jadi mari kita teliti dengan seksama. Pertama, ia mendapatkan folder yang ditentukan sebagai argumen, secara rekursif menemukan file yang dikandungnya, mengelompokkannya berdasarkan nama file, hanya mengambil grup dengan lebih dari satu item (yaitu grup yang mewakili lagu yang digandakan), dan menyimpan koleksi grup dalam $dupes
. Kemudian lagi mendapat direktori induk yang ditentukan, tetapi kemudian hanya daftar subfolder langsung. Ini memfilternya ( ?
), membiarkan hanya yang berisi entri yang digandakan keluar dari jalur pipa dan dicetak ke layar.
Blok filter besar itu menghabiskan sebagian besar skrip, jadi mari kita lihat lebih detail. Itu dimulai dengan dua variabel, satu untuk melacak apakah folder album saat ini hanya berisi duplikat sejauh ini, dan lainnya untuk mencatat apakah sebenarnya ada lagu di folder tersebut. (Saya menduga tidak benar-benar membantu untuk menghitung folder kosong sebagai album kompilasi.) Ini mencantumkan file dalam folder album, kemudian untuk masing-masing folder tersebut ( %
), pastikan ada grup duplikat yang berisi file dengan nama yang sama , dan jika tidak (yaitu tidak ada yang keluar dari pipa pendek di dalam If
), menunjukkan kegagalan dengan menetapkan $allDupes
ke false. Jika untuk-setiap blok tidak berjalan sama sekali, maka$hasAny
tetap salah. Akhirnya, blok filter besar mengevaluasi apakah semua item dalam album adalah duplikat dan sebenarnya ada di sana. Hasil dari ekspresi menentukan apakah folder album akan dimasukkan dalam output pipa luar.
Perhatikan bahwa beberapa fitur PowerShell yang digunakan dalam skrip ini baru-baru ini diperkenalkan. Jika Anda menggunakan Windows 7, -File
dan -Directory
switch tidak akan berfungsi. Ini bisa diselesaikan jika perlu.
Untuk menggunakan skrip, simpan sebagai .ps1
file, mis albumdupes.ps1
. Jika Anda belum melakukannya, ikuti instruksi di bagian Skrip yang Mengaktifkan wiki tag PowerShell . Kemudian Anda dapat menjalankannya dari prompt PowerShell di direktori tempat Anda menyimpannya, menyediakan jalur ke folder artis Anda:
.\albumdupes.ps1 'C:\Users\Ben\Test\albumtest'
Anda akan mendapatkan output seperti ini:
Directory: C:\Users\Ben\Test\albumtest
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 11/20/2017 2:00 PM Album C
d----- 11/20/2017 2:01 PM Album F