Cara Membuang Folder Kosong secara automatik di Windows

Lama kelamaan, beratus-ratus folder kosong dan fail sampah mungkin memakan cakera keras anda. Walaupun fail sampah menempati ruang cakera dan dapat dibersihkan menggunakan tetapan Pembersihan Cakera atau Penyimpanan, direktori kosong tetap ada.

Folder kosong tidak mengambil ruang cakera, tetapi untuk menyusun data anda dengan lebih baik, anda mungkin mahu memangkasnya sekali-sekala.

Artikel ini membincangkan kaedah yang berbeza untuk mencari dan membuang folder kosong di komputer anda.

Bagaimana Mencari dan Mengeluarkan Folder Kosong di Windows?

Folder atau direktori kosong adalah folder yang tidak mempunyai fail atau sub-direktori di dalamnya. Folder kosong tidak mengambil ruang cakera, tetapi terlalu banyak daripadanya boleh mengganggu. Untuk mencari dan menghapusnya, gunakan salah satu kaedah di bawah.

Penting: Menjalankan alat automatik atau fail kumpulan untuk menghapus folder kosong di seluruh pemacu sistem secara berulang biasanya tidak digalakkan. Ini kerana beberapa program mungkin gagal berfungsi dan menimbulkan ralat pelik apabila mendapati folder penting hilang. Seperti biasa, amaran standard berlaku. Pastikan anda mempunyai sandaran yang sesuai sebaiknya pada pemacu luaran, sebelum memanipulasi dengan sistem fail atau pendaftaran Windows.

BERKAITAN: Cari dan hapus fail 0-bait secara berulang dalam folder di Windows

Mari mulakan dengan alat GUI yang rapi, diikuti dengan kaedah baris perintah dan skrip asli.

1. Keluarkan folder kosong menggunakan utiliti "Cari Fail Kosong-n-Folder"

Find Empty Files-n-Folders adalah alat yang sangat baik yang dapat mencari dan menghapus fail kosong (0-byte) dan folder kosong secara berulang di bawah folder folder.

Muat turun Cari Fail Kosong-n-Folder (pemasang 600KB) dari Ashisoft.com.

Pilih folder dan klik Imbas Sekarang.

Alat ini akan menyenaraikan fail dan folder kosong dalam tab berasingan.

Klik Tandai semua Folder dan kemudian klik Padam Folder .

Begitu juga, untuk menghapus fail 0-bait di pohon folder yang dipilih, klik pada tab Kosongkan Fail .

Ashisoft.com mempunyai alat hebat lain yang boleh anda periksa!


2. Keluarkan folder kosong menggunakan perintah "untuk" dan "rd"

Anda boleh menggunakan arahan dalaman Prompt Perintah for dan rd untuk menghitung senarai folder dan menghapus yang kosong.

  1. Tekan & tahan kekunci Shift, klik kanan pada folder dan klik Buka tetingkap arahan di sini . Ini membuka Prompt Perintah di lokasi folder semasa, yang juga dapat mengesahkan di konsol. Catatan: Anda mesti memastikan bahawa anda menjalankan perintah berikut dari jalan folder induk yang tepat di mana anda perlu mencari dan mengeluarkan sub-folder kosong.
  2. Setelah anda berada di direktori yang dikehendaki di Prompt Perintah, jalankan baris arahan ini:
     untuk / f "delims ="% i in ('dir / s / b / ad ^ | sort / r') do rd "% i" 2> NUL 

    $config[ads_text6] not found

    Ini akan menghapus semua direktori kosong di seluruh sub-direktori dari laluan folder asas, termasuk folder kosong bersarang.

Perintah di atas adalah milik Raymond Chen dari Microsoft, melalui blognya The Old New Thing. Dalam catatan ini, baris perintah Raymond telah sedikit diubah sehingga ia juga menghapus nama folder yang berisi ruang.

Bagaimana arahan itu berfungsi

Perintah di atas menyenaraikan semua sub-direktori (secara rekursif) dalam jalur asas semasa, dan menyusun senarai ( sort /r ) dalam urutan terbalik. Urutan terbalik adalah untuk memastikan bahawa penghitungan dilakukan dari bawah ke atas. Ini penting untuk menghapus direktori kosong, kerana anda mesti membuang subdirektori sebelum anda membuang induk.

Kemudian ia cuba membuang senarai direktori (dalam urutan terbalik) menggunakan perintah RD . Sekiranya direktori tidak kosong, ia terus ke direktori seterusnya dan seterusnya. Perintah 2>NUL memastikan bahawa teks output "direktori tidak kosong" ditekan.

Satu-satunya kelemahan kaedah di atas ialah tidak berguna jika anda hanya ingin mencari folder kosong tanpa menghapusnya. Sekiranya anda ingin mencari senarai folder kosong, gunakan baris perintah dalam perenggan di bawah, atau ikuti kaedah lain yang dijelaskan dalam artikel ini.

Cari folder kosong, tetapi jangan padamkan

Untuk mencari folder kosong sahaja tanpa menghapusnya, gunakan sintaks baris perintah ini:

 untuk / r "D: \ muat naik \ 2019" / d% F di (.) do @dir / b "% F" | caristr "^"> nul || gema% ~ fF 

Ini menunjukkan kepada anda output yang mengandungi senarai direktori kosong.

Katakan anda mempunyai folder bersarang kosong seperti ini:

 C: \ 1 └───2 └───3 └───4 

Menjalankan arahan di atas hanya menyenaraikan folder paling kosong paling dalam → 4 . Secara teknikal, ia betul kerana folder tidak boleh dianggap kosong jika sub-folder atau fail ada di dalamnya.


3. Cari dan keluarkan folder kosong menggunakan arahan Robocopy

Robocopy adalah alat penyalin fail terbina dalam yang kuat yang mempunyai banyak ciri canggih. Kami telah membahas Robocopy dalam artikel Bandingkan Isi Dua Folder di Windows.

Anggaplah anda mempunyai folder bernama cars yang mengandungi beberapa sub-folder yang sebahagiannya kosong. Kami akan memadamkan yang kosong menggunakan Robocopy.

Caranya di sini adalah dengan menggunakan arahan bergerak Robocopy, melewati jalur folder yang sama untuk kedua-dua sumber dan juga tujuan.

  1. Buka tetingkap Prompt Perintah
  2. Taipkan arahan berikut dan tekan ENTER:
     robocopy "d: \ automobile rate \ cars" "d: \ automobile rate \ cars" / S / move 

    Perkara yang paling penting untuk diperhatikan di sini ialah jalan sumber dan tujuan adalah (sengaja) sama. Parameter /S memerintahkan Robocopy untuk tidak memindahkan folder kosong ke jalan "tujuan". Seperti yang telah kita sebutkan jalan yang sama untuk sumber dan tujuan, Robocopy hanya akan menghapus folder kosong kerana adanya suis /S

Folder kosong di jalan yang dipilih kini dibersihkan.

Ingin mencari folder kosong tetapi tidak menghapusnya?

Anda boleh menggunakan argumen baris perintah /L (hanya-daftar) dengan Robocopy sehingga hanya menjalankan operasi kering dan bukannya menjalankan operasi salin / bergerak yang sebenarnya.

/L :: Senarai sahaja - jangan salin, cap waktu atau hapus fail apa pun.

/MOVE :: Pindahkan fail DAN dirs (hapus dari sumber setelah menyalin).

/S :: salin Subdirektori, tetapi tidak kosong.

Anda dapat melihat jumlah fail dalam lajur mendengar jalan folder. 0 s bermaksud bahawa folder tersebut tidak mempunyai fail.

Mari letakkan perintah ini untuk ujian sebenar!

Folder %APPDATA% saya penuh dengan folder kosong yang ditambahkan oleh program yang sudah usang.

$config[ads_text6] not found

Sebelum pembersihan, folder Appdata \ Roaming mempunyai 681 folder, seperti yang dilihat pada sifat folder.

Saya membuka Command Prompt, dan menjalankan perintah berikut:

 robocopy "% appdata%" "% appdata%" / S / MOVE 

Catatan: pembolehubah persekitaran% appdata% diterjemahkan ke folder C:\Users\{username}\AppData\Roaming . Anda boleh menggunakan jalur folder penuh atau pemboleh ubah persekitaran yang setara dengan Robocopy. Sama ada baik.

Telah berjaya mengeluarkan 94 folder kosong dalam folder dan sub-folder %APPDATA% saya.

Catatan editor: Dalam output baris perintah di bawah bahagian statistik, ralat berikut muncul:

“ERROR 32 (0x00000020) Menghapus Direktori Sumber C: \ Users \ ramesh \ AppData \ Roaming \

Proses tidak dapat mengakses fail kerana digunakan oleh proses lain. "

Kerana kami telah mengarahkan Robocopy untuk memindahkan ( /MOVE ) direktori% APPDATA%, alat ini berusaha membersihkan folder "sumber" setelah "memindahkan" ke tujuan. Tidak boleh, kerana% APPDATA% adalah folder khas. Kesalahan tidak berlaku semasa menggunakan jalan direktori yang bukan folder khas. Oleh kerana semuanya berjalan lancar, saya tidak mengendahkan kesalahan (remeh).


4. Cari dan Keluarkan folder kosong menggunakan PowerShell

Baris arahan PowerShell berikut menghapus folder kosong yang terletak di bawah folder asas yang ditentukan secara berulang.

  1. Mulakan PowerShell dan ketik arahan berikut:
     (gci "folderpath" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Hitung-eq 0} | buang barang 

    Ganti "folderpath" dengan lokasi folder asas. Sebagai contoh, saya menentukan folder Perayauan di sini:

     (gci "C: \ Users \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Hitung-eq 0} | buang barang 

    Ini akan menghapus semua sub-folder kosong di bawah folder %appdata% saya secara berulang dan tidak menunjukkan output, melainkan jika terdapat sebarang ralat.

Perhatikan bahawa arahan PowerShell di atas membersihkan hanya tahap terakhir folder bersarang kosong. Sebagai contoh, katakan anda mempunyai folder bersarang kosong seperti ini:

 C: \ 1 └───2 └───3 └───4 

Menjalankan perintah di atas membersihkan folder paling kosong paling dalam → 4 . Menjalankan skrip sekali lagi akan membersihkan tahap lain dari folder bersarang ( 3 ), dan seterusnya.

Anda boleh menggunakan skrip PowerShell di Svendsen Tech PowerShell Wiki untuk bekerja dengan folder bersarang.

Sebagai alternatif, anda boleh menggunakan kaedah seterusnya, penyelesaian Skrip Windows untuk membersihkan semua folder kosong termasuk folder bersarang secara berulang.

Cari folder kosong, tetapi tidak mahu menghapusnya?

Ingin mendapatkan senarai folder kosong, tetapi tidak mahu menghapusnya? Gunakan contoh baris arahan ini sebagai gantinya:

 (gci "C: \ Users \ ramesh \ AppData \ Roaming" -r |? {$ _. PSIsContainer -eq $ True}) | ? {$ _. GetFileSystemInfos (). Hitung-eq 0} | pilih Nama Penuh | Pandangan Luar Grid 

Perintah mengeluarkan senarai folder kosong dengan jalur penuh ke kawalan paparan grid.

Petua: Dalam paparan grid, anda boleh memilih semua dan menyalin pilihan dengan menekan Ctrl + C

Adalah idea yang baik untuk melihat senarai sebelum menjalankan perintah untuk menghapus folder.


5. Cari dan Keluarkan folder kosong menggunakan Skrip Windows

Pekerja Microsoft Jeremy Jameson menulis VBScript yang menghapus folder kosong secara berulang. Saya telah menambah lebih banyak baris dalam skrip sehingga memaksa menghapus direktori kosong hanya baca, mengeluarkan senarai folder kosong. Ini juga mengeluarkan senarai folder kosong yang tidak dapat dihapus, bersamaan dengan keterangan ralat yang sesuai.

$config[ads_text6] not found

Skrip ini mampu menghapus direktori kosong bersarang di sub-folder.

 Pilihan Jelas Jika (WScript.Arguments.Count 1) Kemudian WScript.Echo ("Penggunaan: cscript DeleteEmptyFolders.vbs {path}") WScript.Quit (1) Tamat Jika Dim strPath: strPath = WScript.Arguments (0) Dim fso: Tetapkan fso = CreateObject ("Scripting.FileSystemObject") Dim objFolder: Tetapkan objFolder = fso.GetFolder (strPath) Dim sDelList, sDelErr, sFolderPath Dim iCnt iCnt = 0 DeleteEmptyFolders objFolder SubderEdipEfomder SubderEdip folder semasa mengakses Junctions, dll. Untuk setiap subfolder Dalam folder.SubFolders DeleteEmptyFolders subfolder Next On Error Goto 0 If folder.SubFolders.Count = 0 And folder.Files.Count = 0 Then sFolderPath = folder.Path On Error Resume Next fso.DeleteFolder folder .Path, True If Err.number 0 Maka sDelErr = sDelErr & Err.number & ":" & Err.description & _ vbCrLf & sFolderPath & vbCrLf & vbCrLf Else sDelList = sDelList & vbCrLf & sFolderP t = iCnt + 1 Tamat Jika Pada Ralat Pergi 0 Tamat Jika Tamat Sub Jika sDelList = "" Dan sDelErr = "" Kemudian WScript.Echo "Tidak terdapat folder kosong di bawah" & _ "" "& strPath &" "" " & "tree" WScript.Quit End If If sDelList "" maka sDelList = "Senarai folder kosong dipadamkan" & vbCrLf _ & String (38, "-") & vbCrLf & sDelList & vbCrLf & _ vbCrLf & "Total:" & folder iCnt & "dihapuskan." Sekiranya sDelErr "" maka sDelErr = "Folder ini tidak dapat dihapuskan" & _ vbCrLf & String (45, "-") & vbCrLf & sDelErr WScript.Echo sDelList & vbCrLf & vbCrLf & sDelErr 

Salin kod di atas ke Notepad dan simpan fail dengan sambungan .vbs, katakan delempty.vbs .

Anda boleh menjalankan skrip menggunakan 2 cara:

melalui Prompt Perintah, dengan menjalankan:

 cscript.exe delempty.vbs "folder_path" 

melalui GUI, dengan menjalankan:

 wscript.exe delempty.vbs "folder_path" 

melalui menu Hantar Ke

Anda boleh membuat jalan pintas ke skrip di folder SendTo anda, dan menamakannya sebagai Delete Empty Folders .

Kemudian, klik kanan pada folder di mana anda ingin menghapus sub-folder kosong secara berulang → klik Kirim Ke → klik Padam Kosongkan folder di menu Kirim Ke.

Anda akan melihat senarai folder kosong yang dihapus dan jumlahnya, dan folder yang tidak dapat dihapuskan dengan kod ralat masing-masing dipaparkan.

Itu sahaja! Sekiranya anda mengetahui kaedah lain untuk membuang folder kosong di Windows, ketahui di bahagian komen di bawah.

Artikel Berkaitan