Jadi saya rupanya memiliki ratusan "album" di folder musik saya dengan hanya satu file musik di dalamnya.
Saya tidak suka itu, saya hanya ingin album lengkap di folder itu.
Apakah ada solusi mudah untuk ini? Intinya alat yang menghapus semua folder dengan hanya satu file di dalamnya? Saya menggunakan Windows 7
windows-7
file-management
Forza
sumber
sumber
Jawaban:
Buka PowerShell ISE dan coba jalankan ini:
Ini (harus) mengeluarkan daftar semua folder dengan satu file di dalamnya. Perhatikan baik-baik daftar dan pastikan tidak ada folder yang tidak disengaja. Kemudian Anda dapat menjalankan perintah:
Ini akan menghapus semua folder yang terdaftar di
$targets
.Jika Anda perlu memodifikasi skrip ini, ada baiknya Anda memahami apa yang dilakukannya. Sebagai contoh, Anda akan menghapus folder dengan subfolder tetapi tidak ada file di direktori pertama . Jadi, jika Anda memiliki sesuatu seperti
C:\Users\Forza\Music\SomeArtist\SomeAlbum
, seluruh direktoriSomeArtist
akan dihapus. Juga, folder kosong apa pun akan tetap ada.Mari kita pergi baris demi baris:
$targets = @()
mendefinisikan sebuah array. Ini supaya kita bisa menambahkan$folder
s untuk$targets
tanpa melemparkan kesalahan dan pastikan itu$targets
mulai kosong, daripada terus menambahkannya sambil memodifikasi skrip kami dan akhirnya menghapus lebih banyak folder daripada yang kami maksud.$folders = dir 'C:\Users\Forza\Music\' | Where {$_.mode -match "d"}
daftar isi dari direktori yang ditentukan dan pipa yang menghasilkan keWhere-Object
perintah.$_.mode -match "d"
mengambil objek pipa dan memeriksa apakah mereka adalah direktori.foreach ($folder in $folders) {
mulai perulangan melalui setiap folderif(
memulai pernyataan if untuk memeriksa jumlah file di dalam folder. Saya telah membagi setiap baris untuk membuatnyamembingungkanbisa dibaca$folder.GetFiles() |
ini mengambil semua file di folder yang kami periksa. Perhatikan pipa, yang mengirimkan output ke perintah berikutnya pada baris berikutnya.Measure-Object |
cukup jelas. Jika tidak, coba perintahnyaGet-Help Measure-Object
.Select -ExpandProperty Count) -eq 1)
memilih dan memperluasCount
properti sehingga kita dapat melihat apakah itu sama dengan (-eq
) 1. Perhatikan dua kurung tutup, satu untuk ditutup($folder.GetFiles() | Measure-Object | Select -ExpandProperty Count)
dan satu untuk menutupif
pernyataan.{$targets += $folder}
menambahkan folder yang cocok dengan kriteria kami ke$targets
daftar.}
menutup loop foreach.$targets | Format-Table -Property Name
menghapus daftar folder untuk dihapus.Jika Anda ingin memodifikasi ini untuk menghapus folder kosong juga, cukup ubah
-eq 1
untuk-lt 2
. Dengan sedikit kreativitas Anda harus bisa mendapatkan skrip untuk menangani struktur file berantakan Anda sesuka Anda.Untuk merawat folder Artis di bawah \ Music, ubah jalur ke sesuatu seperti
C:\Users\Forza\Music\*\*\
.sumber
Ini melakukannya untuk saya:
Hapus -Apa Jika Anda melakukannya untuk nyata. Perhatikan bahwa itu akan menghapus folder yang memiliki satu file di dalamnya bahkan jika itu memiliki sub-folder dengan lebih banyak file.
sumber