Buka PowerShell ISE dan coba jalankan ini:
$targets = @()
$folders = dir "D:\Users\Forza\Music\" | Where {$_.mode -match "d"}
foreach ($folder in $folders) {
if(
($folder.GetFiles() |
Measure-Object |
Select -ExpandProperty Count) -eq 1)
{$targets += $folder}
}
$targets | Format-Table -Property Name
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:
foreach ($target in $targets){Remove-Item -Recurse -Force $target.FullName}
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 direktori SomeArtist
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 ke Where-Object
perintah. $_.mode -match "d"
mengambil objek pipa dan memeriksa apakah mereka adalah direktori.
foreach ($folder in $folders) {
mulai perulangan melalui setiap folder
if(
memulai pernyataan if untuk memeriksa jumlah file di dalam folder. Saya telah membagi setiap baris untuk membuatnya membingungkan bisa 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 perintahnya Get-Help Measure-Object
.
Select -ExpandProperty Count) -eq 1)
memilih dan memperluas Count
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 menutup if
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\*\*\
.