Menghapus banyak file di Windows lambat

34

Saya memiliki kotak Windows XP dengan disk NTFS dan menghapus sejumlah besar file sangat lambat. Jika saya memilih folder yang berisi sejumlah besar file di pohon folder dan menghapus (menggunakan shift-del untuk menyimpan recycle bin) itu membutuhkan waktu yang tampaknya berbanding lurus dengan jumlah file di dalam folder sebelum bahkan muncul kotak konfirmasi. Kemudian dibutuhkan waktu lebih lama untuk menghapus setiap file di folder.

Apakah ada cara untuk menghapus folder di Windows dan tidak memiliki waktu yang diambil sebanding dengan jumlah file di dalamnya?

Sindri Traustason
sumber

Jawaban:

60

Apakah ada cara untuk menghapus folder di Windows dan tidak memiliki waktu yang diambil sebanding dengan jumlah file di dalamnya?

Saya rasa tidak, tetapi beberapa metode jelas jauh lebih cepat daripada yang lain.

Cara terburuk adalah mengirim ke Keranjang Sampah: Anda masih perlu menghapusnya. Yang terburuk berikutnya adalah shift + delete dengan Windows Explorer: ia membuang banyak waktu untuk memeriksa konten sebelum mulai menghapus sesuatu.

Cara terbaik berikutnya adalah menggunakan rmdir /s/q foldernamedari baris perintah. del /f/s/q foldernamebagus juga, tetapi meninggalkan struktur direktori.

Yang terbaik yang saya temukan adalah file batch dua baris dengan pass pertama untuk menghapus file dan output ke nomor untuk menghindari biaya overhead penulisan ke layar untuk setiap file menghanguskan. Lulus kedua kemudian membersihkan struktur direktori yang tersisa:

del /f/s/q foldername > nul
rmdir /s/q foldername

Ini hampir tiga kali lebih cepat daripada rmdir tunggal, berdasarkan tes waktu dengan disk terenkripsi Windows XP, menghapus ~ 30GB / 1.000.000 file / 15.000 folder: rmdirmembutuhkan ~ 2,5 jam, del+rmdirmembutuhkan ~ 53 menit. Info lebih lanjut di sini .

Ini adalah tugas rutin bagi saya, jadi saya biasanya memindahkan barang-barang yang perlu saya hapus ke C: \ stufftodelete dan memiliki del+rmdirperintah - perintah itu dalam file batch deletestuff.bat. Ini dijadwalkan untuk berjalan di malam hari, tetapi kadang-kadang saya harus menjalankannya di siang hari agar semakin cepat semakin baik.

Hugo
sumber
> nul
Suara positif
1
Windows akan membuat saya menunggu untuk memindai ribuan file dari cadangan SDK lama. Butuh setidaknya satu jam, ini mungkin 10 menit dalam kasus saya. Saya telah memasukkannya ke file kelelawar untuk penggunaan berulang: gist.github.com/DavidEdwards/61d4d336232284b33b237b04da5bfe10
Knossos
Lihat juga jawaban yang sama dengan info lebih lanjut di superuser.com/questions/19762/mass-deleting-files-in-windows
Warlike Chimpanzee
1

Apakah ada cara untuk menghapus folder di Windows dan tidak memiliki waktu yang diambil sebanding dengan jumlah file di dalamnya?

Ya, format partisi. Saya agak terkejut tidak ada yang menyarankan itu dalam 9 tahun sebelumnya.

Ini cukup radikal, tetapi jika Anda mengantisipasi melakukan ini sering untuk folder tertentu, mungkin ada baiknya membuat partisi terpisah untuk itu.


Jika itu terlalu radikal, jawaban lain adalah satu-satunya harapan Anda. Ada penjelasan yang bagus mengapa di serverfault . Ini untuk sistem file linux dan XFS, tetapi logika yang sama berlaku di sini. Anda tidak dapat banyak meningkatkan fungsi-fungsi OS bawaan.

Namun, jika Anda tahu jalur ke semua file yang ingin Anda hapus, maka Anda dapat menyimpan panggilan yang daftar isi direktori dan panggilan hapus langsung, menyimpan beberapa overhead. Masih sebanding dengan jumlah file sekalipun.

Secara pribadi, saya suka beberapa dari laporan kemajuan untuk memastikan diri saya bahwa program tidak mati. Jadi saya suka menghapus barang melalui python. Misalnya, jika semua file berada dalam satu direktori tanpa sub-direktori:

import tqdm
import sys
import os

location = sys.argv[1]
directory = os.fsencode(location)

with os.scandir(directory) as it:
    for dir_entry in tqdm.tqdm(it):
        try:
            os.remove(dir_entry.path)
        except OSError:
            pass  # was not a file

Ini menghapus sekitar 250 file / s pada SEAGATE ST3250620NS saya yang berusia 12 tahun. Saya menganggap itu akan jauh lebih cepat di drive Anda.

Namun, pada titik ini hanya optimasi mikro, jadi tidak akan berbuat banyak kecuali Anda memiliki jutaan file dalam satu direktori. (seperti saya, lol, apa yang telah saya lakukan D :)

FirefoxMetzger
sumber
0

Instal gnutools for windowsdan jalankan:

find YOURFOLDER -type d -maxdepth 3 | xargs rm -Rf
tak berguna
sumber
0

Pastikan Anda tidak mencadangkan file ke cloud dan mencoba menghapusnya secara bersamaan!

Dengan banyak solusi cadangan cloud, file-file akan terkunci saat sedang dicadangkan dan kemudian Anda harus menunggu agar dicadangkan.

Jika Anda mengalami masalah ini dengan mengatakan direktori temp (atau sesuatu yang tidak perlu dicadangkan) pastikan direktori temp tidak dipilih dalam set cadangan Anda.

Simon
sumber
0

Saya telah menemukan bahwa folder dengan beberapa lapisan direktori cenderung memperlambat kemampuan Window untuk menghapusnya dengan cepat. Saya sedang mengerjakan sebuah proyek di mana butuh 5 level untuk sampai ke folder node_modules, yang selalu merupakan binatang buas untuk dihapus, bahkan dengan

del /f/s/q foldername > nul
rmdir /s/q foldername

Apa yang akhirnya saya lakukan dalam situasi ini adalah menavigasi ke folder node_modules atau direktori apa pun yang memiliki level paling dalam dan mulai memilih dan menghapus sekitar selusin direktori pada suatu waktu. Jika saya membuat banyak penghapusan, ini memaksa Recycle Bin untuk bekerja dalam proses paralel dan bukan menggunakan satu utas yang saya percayai, mempercepat proses secara dramatis.

Setelah direktori terdalam saya kosong, saya naik beberapa level dan melakukan hal yang sama. Ini telah mengurangi penghapusan yang telah membuat saya lebih dari satu jam menjadi hanya beberapa menit.

Ini adalah proses yang sangat manual dan mungkin bisa ditulis dengan beberapa keberhasilan, tetapi itulah yang berhasil bagi saya

TabsNotSpaces
sumber
0

Saya menggunakan jawaban asli Hugo untuk membuat file .bat yang saya gunakan saat menghapus proyek NPM. Saya menambahkan variabel path dan hanya perlu menyalin dan menempel path sekali. Klik dua kali file .bat dan ini berfungsi dengan baik - tidak perlu mengetik semuanya.

set path="FOLDER_PATH"
del /f/s/q %path% > nul
rmdir /s/q %path%

Contoh penggunaan:

set path="C:\Projects\My React Project"
del /f/s/q %path% > nul
rmdir /s/q %path%
Tenang
sumber
-2

apakah Anda mencoba menggunakan command prompt

rmdir /s /q foldername

semua operasi file besar di GUI lambat - kebanyakan karena umpan balik visual (progress bar) harus dicat ulang berkali-kali

nEJC
sumber
5
Ini tidak masuk akal. Pengoperasian mungkin lambat karena GUI perlu menghitung semua file untuk memperkirakan waktu yang diperlukan tetapi bukan karena pengecatan ulang.
Bender
salah ... Saya bekerja dengan folder besar terus-menerus (kebanyakan server win2k), dan menggunakan TotalCommander untuk memindahkan / menyalin / menghapus barang. Saya perhatikan bahwa jika saya meminimalkan TC atau menempatkan jendela aplikasi lain di atas hal-hal TC dilakukan setidaknya 50% lebih cepat. TC masih mengecat hal Visal, tapi semuanya diabaikan dalam compositing ...
Nejc
6
Apakah komputer Anda sangat lambat sehingga operasi GUI memengaruhi kinerja I / O disk? Atau apakah TotalCommander hanya berkode sangat buruk? Disk ini ratusan atau ribuan kali lebih lambat daripada CPU, RAM, dan kartu Video. Jika grafik memperlambat disk Anda menulis Anda memiliki masalah besar.
Mr. Shiny dan New New 宇
1
Pertanyaan itu "tidak memiliki waktu yang diambil sebanding dengan jumlah file" karena suatu alasan. Saya tidak mencari 50% lebih cepat.
Sindri Traustason
@ Indri Jika Anda melakukannya dengan cara command prompt seharusnya hampir tidak ada penundaan sebelum sistem mulai bekerja dengan ajaibnya. Sejauh yang saya mengerti preprocessing ini adalah di mana masalah Anda.
nEJC