Xóa số lượng lớn tệp trong Windows chậm


34

Tôi có một hộp Windows XP với đĩa NTFS và việc xóa một lượng lớn tệp cực kỳ chậm. Nếu tôi chọn một thư mục chứa một số lượng lớn tệp trong một cây thư mục và xóa (sử dụng shift-del để lưu thùng rác) thì sẽ mất thời gian dường như tỷ lệ thuận với số lượng tệp trong thư mục trước cả bật lên hộp xác nhận. Sau đó sẽ mất nhiều thời gian hơn để xóa từng tệp trong thư mục.

Có cách nào để xóa một thư mục trong Windows và không mất thời gian tỷ lệ thuận với số lượng tệp trong đó không?


Câu trả lời:


60

Có cách nào để xóa một thư mục trong Windows và không mất thời gian tỷ lệ thuận với số lượng tệp trong đó không?

Tôi không nghĩ vậy, nhưng một số phương pháp rõ ràng nhanh hơn nhiều so với các phương pháp khác.

Cách tồi tệ nhất là gửi đến Thùng rác: bạn vẫn cần xóa chúng. Điều tồi tệ nhất tiếp theo là shift + xóa với Windows Explorer: nó lãng phí vô số thời gian kiểm tra nội dung trước khi bắt đầu xóa bất cứ thứ gì.

Tiếp theo tốt nhất là sử dụng rmdir /s/q foldernametừ dòng lệnh. del /f/s/q foldernamecũng tốt, nhưng nó để lại cấu trúc thư mục.

Điều tốt nhất tôi tìm thấy là một tệp bó hai dòng với lần đầu tiên xóa tệp và xuất ra nul để tránh chi phí ghi lên màn hình cho mỗi tệp singe. Một pass thứ hai sau đó dọn sạch cấu trúc thư mục còn lại:

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

Tốc độ này nhanh hơn gần ba lần so với một rmdir, dựa trên các thử nghiệm thời gian với đĩa được mã hóa Windows XP, xóa ~ 30GB / 1.000.000 tệp / 15.000 thư mục: rmdirmất ~ 2,5 giờ, del+rmdirmất ~ 53 phút. Thêm thông tin ở đây .

Đây là một nhiệm vụ thường xuyên đối với tôi, vì vậy tôi thường di chuyển những thứ tôi cần xóa sang C: \ Stufftodelete và có các del+rmdirlệnh đó trong tệp bó deletestuff.bat . Điều này được lên kế hoạch để chạy vào ban đêm, nhưng đôi khi tôi cần chạy nó vào ban ngày để càng nhanh càng tốt.


Upvote bao gồm> nul
Nuktu

1
Windows sẽ khiến tôi chờ đợi để quét hàng ngàn tệp từ bản sao lưu của SDK cũ. Nó sẽ mất ít nhất một giờ, điều này có thể là 10 phút trong trường hợp của tôi. Tôi đã đặt nó vào một tập tin bat để sử dụng lặp lại: gist.github.com/DavidEdwards/61d4d336232284b33b237b04da5bfe10
Knossos

Xem thêm câu trả lời tương tự với nhiều thông tin hơn tại superuser.com/questions/19762/mass-deleting-files-in-windows
Chimpanzee hiếu chiến

1

Có cách nào để xóa một thư mục trong Windows và không mất thời gian tỷ lệ thuận với số lượng tệp trong đó không?

Vâng, vâng, định dạng phân vùng. Tôi hơi ngạc nhiên không ai đề nghị rằng trong 9 năm trước.

Nó khá triệt để, nhưng nếu bạn dự đoán làm việc này thường xuyên cho một thư mục cụ thể, thì có thể đáng để tạo một phân vùng riêng cho nó.


Nếu đó là quá triệt để, các câu trả lời khác là hy vọng duy nhất của bạn. Có một lời giải thích tốt tại sao trên serverfault . Nó dành cho hệ thống tập tin linux và XFS, nhưng logic tương tự được áp dụng ở đây. Bạn không thể cải thiện nhiều về các chức năng HĐH tích hợp.

Tuy nhiên, nếu bạn biết đường dẫn đến tất cả các tệp bạn muốn xóa, thì bạn có thể lưu vào các cuộc gọi liệt kê nội dung thư mục và xóa cuộc gọi trực tiếp, tiết kiệm một số chi phí. Vẫn tỷ lệ thuận với số lượng tập tin mặc dù.

Cá nhân, tôi thích một số từ báo cáo tiến độ để đảm bảo rằng chương trình đã không chết. Vì vậy, tôi muốn xóa công cụ thông qua python. Ví dụ: nếu tất cả các tệp nằm trong một thư mục không có thư mục con:

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

Thao tác này sẽ xóa khoảng 250 tệp / s trên SEAGATE ST3250620NS 12 tuổi của tôi. Tôi cho rằng nó sẽ nhanh hơn nhiều trên ổ đĩa của bạn.

Tuy nhiên, tại thời điểm này, nó chỉ là tối ưu hóa vi mô, vì vậy sẽ không làm được gì nhiều trừ khi bạn có hàng triệu tệp trong một thư mục. (như tôi, lol, tôi đã làm gì vậy :)


0

Cài đặt gnutools for windowsvà chạy:

find YOURFOLDER -type d -maxdepth 3 | xargs rm -Rf

0

Đảm bảo bạn không sao lưu các tệp lên đám mây và cố gắng xóa chúng cùng một lúc!

Với nhiều giải pháp sao lưu đám mây, các tệp sẽ bị khóa trong khi chúng đang được sao lưu và sau đó bạn phải đợi chúng được sao lưu.

Nếu bạn gặp vấn đề này khi nói thư mục tạm thời (hoặc thứ gì đó không cần sao lưu), hãy đảm bảo rằng thư mục tạm thời không được chọn trong bộ sao lưu của bạn.


0

Tôi thấy rằng các thư mục có nhiều lớp thư mục có xu hướng thực sự làm chậm khả năng của Window để loại bỏ chúng nhanh chóng. Tôi đã làm việc trên một dự án trong đó phải mất 5 cấp độ để đến thư mục node_modules, đây luôn là một con thú cần xóa, ngay cả với

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

Điều cuối cùng tôi làm trong tình huống này là điều hướng xuống thư mục node_modules hoặc bất kỳ thư mục nào có mức sâu nhất và chỉ cần bắt đầu chọn và xóa khoảng một tá thư mục mỗi lần. Nếu tôi nhận được nhiều lần xóa, điều này buộc Thùng rác hoạt động theo các quy trình song song thay vì luồng đơn mà tôi tin rằng nó sử dụng, tăng tốc đáng kể quá trình.

Khi thư mục sâu nhất của tôi trống, tôi đi lên một vài cấp và làm điều tương tự. Điều này đã cắt giảm các xóa đã khiến tôi mất hơn một giờ đến chỉ vài phút.

Đó là một quá trình rất thủ công và có thể có kịch bản với một số thành công, nhưng đó là những gì làm việc cho tôi


0

Tôi đã sử dụng câu trả lời ban đầu của Hugo để tạo tệp .bat mà tôi sử dụng khi xóa các dự án NPM. Tôi đã thêm một biến đường dẫn và chỉ phải sao chép và dán đường dẫn một lần. Bấm đúp vào tệp .bat và nó thực hiện tất cả công việc - không cần nhập mọi thứ.

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

Ví dụ sử dụng:

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

-2

bạn đã thử sử dụng dấu nhắc lệnh chưa

rmdir /s /q foldername

tất cả các thao tác tệp lớn trong GUI đều chậm - chủ yếu là do phản hồi trực quan (thanh tiến trình) phải được sơn lại nhiều lần


5
Thật vô nghĩa. Hoạt động có thể chậm vì GUI cần đếm tất cả các tệp để ước tính thời gian cần thiết nhưng không phải do sơn lại.
Bender

sai ... Tôi làm việc với các thư mục lớn liên tục (chủ yếu là máy chủ win2k) và sử dụng TotalCommander để di chuyển / sao chép / xóa nội dung. Tôi đã nhận thấy rằng nếu tôi thu nhỏ TC hoặc đặt một cửa sổ ứng dụng khác lên trên các công cụ TC sẽ được thực hiện nhanh hơn ít nhất 50%. TC vẫn đang sơn lại các công cụ trực quan, nhưng mọi thứ bị bỏ qua trong việc tổng hợp ...
nEJC

6
Máy tính của bạn có chậm đến mức các hoạt động GUI ảnh hưởng đến hiệu suất I / O của đĩa không? Hay TotalCommander chỉ được mã hóa cực kỳ kém? Đĩa chậm hơn hàng trăm hoặc hàng nghìn lần so với CPU, RAM và thẻ Video. Nếu đồ họa làm chậm đĩa ghi của bạn, bạn có vấn đề lớn.
Ông Sáng bóng và Mới 安

1
Câu hỏi "không có thời gian tỷ lệ thuận với số lượng tệp" vì một lý do. Tôi không tìm kiếm nhanh hơn 50%.
Sindri Traustason

@Sindri Nếu bạn làm theo cách đó, dấu nhắc lệnh sẽ gần như không có độ trễ trước khi hệ thống bắt đầu hoạt động. Theo như tôi hiểu thì tiền xử lý này là vấn đề của bạn.
nEJC
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.