Tự động xóa các tệp cũ khỏi thùng tái chế trong khi vẫn giữ các tệp mới?


25

Tôi muốn một add-on explorer sẽ xóa các tệp cũ khỏi thùng tái chế sau một khoảng thời gian.

Ví dụ: tôi muốn đặt giới hạn thời gian là 30 ngày. Khi tôi xóa một tệp trong Windows, phần mềm sẽ giữ một bản ghi về thời gian xóa của nó. Mỗi ngày, nó sẽ quét các tập tin bị xóa có tuổi đã lên tới 30 ngày và xóa nếu có.

Có phần mềm nào như thế này không?


Có lẽ, thay vì đặt giới hạn thời gian, bạn có thể để Thùng rác tự động xóa các mục cũ nhất khi đã đạt đến giới hạn kích thước nhất định ? Điều này sẽ được chấp nhận?
William Jackson

3
@WilliamJackson Đó có thể là một giải pháp cho những người bị giới hạn dung lượng đĩa cứng. Nhưng trong trường hợp của tôi, tôi muốn đảm bảo rằng tôi sẽ không hối tiếc về việc làm trống tập tin tái chế vì mất tập tin bị xóa gần đây. Với hệ thống này, tôi sẽ quên đi thùng rác, nó sẽ tự động trống và tôi sẽ có nhiều thời gian để khôi phục một tệp đã bị xóa nếu sau đó tôi rất hối hận.
hkBattousai

1
Trên thế giới gnu / linux, KDE có tính năng này và tôi nghĩ nó rất tuyệt cho khả năng sử dụng. Tại sao tôi nên giữ trong thùng rác các tập tin trong hơn 1 tháng? Cách tiếp cận này không làm lộn xộn thùng rác của bạn với các tệp cũ không còn phù hợp với bạn nữa, vì vậy việc tìm và khôi phục một hoặc nhiều tệp khi bạn cần nó sẽ rất dễ dàng (thực sự hữu ích nếu bạn làm việc nhiều văn bản dí dỏm các tệp luôn nhỏ) và không lãng phí dung lượng đĩa với các tệp không còn hữu ích cho bạn.
gerlos

Đây không phải là một nhà thám hiểm bổ sung và chỉ 24 giờ, nhưng CCleaner có tùy chọn này i.imgur.com/JaeJhzU.png
Matthew Lock

Câu trả lời:


9

RecyclBinEx là một ứng dụng đơn giản dành cho Windows thực hiện chính xác những gì bạn yêu cầu. Xem: http://www.fcleaner.com/recyclbinex

Trên Mac OSX, Hazel cũng làm điều tương tự (trong số những người khác): http://www.noodlesoft.com/

KDE Plasma vận chuyển tính năng này làm mặc định , vì vậy nếu bạn đang chạy Kubfox, Arch, Chackra Linux hoặc bất kỳ bản phân phối nào khác với KDE, bạn đã có tính năng này. Chỉ cần nhìn vào cửa sổ cấu hình cá heo.

Trên Ubuntu Unity, Gnome hoặc bất kỳ môi trường máy tính để bàn gnu / linux nào khác cung cấp tính năng Thùng rác FreeDesktop.org tiêu chuẩn, bạn có thể sử dụng AutoTrash để thực hiện việc này: http://www.logfish.net/pr/autotrash/
Cũng có thể thực hiện hành vi tương tự với thùng rác , cũng có thể được sử dụng để gửi tệp đến thùng rác ngay từ dòng lệnh. Xem: https://github.com/andreafrancia/trash-cli

Hầu hết các ứng dụng email ngoài đó cũng có tính năng này cho "thùng rác" của họ.

Trên Android không có bất kỳ "thùng rác" nào theo mặc định (khi bạn xóa nó, nó sẽ biến mất vĩnh viễn), nhưng bạn có thể cài đặt các ứng dụng như Dumpster để (bằng cách nào đó) có các tính năng tương tự: http://www.dumpsterapp.mobi/

Như đã nói ở trên, tôi nghĩ rằng việc tự động xóa các tệp cũ khỏi thùng rác là một tính năng tuyệt vời để làm cho nó dễ sử dụng hơn , vì nó làm giảm sự lộn xộn (những tệp bạn đã bỏ rác 3 tháng trước có còn phù hợp với bạn không? tập tin?) và giúp dễ dàng tìm thấy những gì bạn muốn khôi phục (đây là lý do để có "thùng rác" trên máy tính của chúng tôi), vẫn an toàn.

Nó thậm chí còn hữu ích hơn nếu bạn làm việc nhiều với các tệp văn bản (mã hoặc văn xuôi), rằng hầu hết thời gian là nhỏ và không cần nhiều không gian (vì vậy có thể không bao giờ đạt đến hạn mức rác của bạn). Bằng cách này, bạn thậm chí sẽ không cần định kỳ "đổ thùng rác của mình". Bạn chỉ cần biết rằng bạn có một cửa sổ thời gian để khôi phục các tệp "rác" của mình nếu bạn cần.

Nhìn vào hầu hết các dịch vụ đám mây ngoài kia (Dropbox, Google Drive, Simplenote, ...), hầu hết chúng dường như có chính sách tương tự đối với các tệp bị xóa. Tôi thực sự nghĩ rằng đó là điều đúng đắn với các tệp của bạn và dường như họ nghĩ như vậy.


1
Tôi đã sử dụng phần mềm này kể từ khi bạn đăng câu trả lời của bạn ở đây. Nó khá tốt. Tôi hài lòng với nó. Tôi khuyến khích điều đó. Đây chính xác là những gì tôi đang tìm kiếm. Cảm ơn câu trả lời của bạn.
hkBattousai

1
Một bổ sung thú vị vào danh sách đó là trash-cli, một công cụ rác dòng lệnh tương tự autotrash, cho phép bạn gửi các tệp vào thùng rác ngay cả từ dòng lệnh. Xem webupd8.org/2010/02/make-rm-move-files-to-trash-instead-of.htmlgithub.com/andreafrancia/trash-cli
gerlos

RecyclBinEx sẽ hoạt động trong Windows 10? Nó dường như không phải là một tính năng mặc định được cung cấp trong Windows 10.
still_dreaming_1

1
@ still_dreaming_1 lần trước tôi đã thử (vài tháng trước), RecycleBinExdường như hoạt động trên Windows 10. Nhưng tôi không sử dụng nó làm hệ thống chính của mình, vì vậy tôi không thể biết liệu nó có còn hoạt động với các bản cập nhật gần đây của hệ thống không.
gerlos

1
Tôi vừa thử RecyclBinEx trên Windows 10. GUI có một số hành vi lạ - một số tệp trong thùng rác hiển thị với tên tệp một ký tự - nhưng tùy chọn dòng lệnh để xóa các tệp cũ hơn X ngày dường như hoạt động tốt. Để xem các tùy chọn dòng lệnh, nhập "RecyclBinEx.exe /?" tại dòng lệnh.
Aaron

17

Tôi không biết về bất kỳ tiện ích bổ sung nào của Explorer, nhưng giống như hầu hết mọi thứ trong Windows, điều này có thể được thực hiện với PowerShell:

ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
    $Path = $Drive.Name + ':\$Recycle.Bin'
    Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
    Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
    Remove-Item -Recurse
}

Lưu tập lệnh này dưới dạng tệp văn bản có .ps1phần mở rộng. Sau đó, bạn có thể sử dụng Trình lập lịch tác vụ để chạy việc này đều đặn.

Tuy nhiên, trước tiên, bạn cần cho phép thực thi các tập lệnh PowerShell, vì theo mặc định, bạn chỉ có thể thực thi các lệnh được nhập trực tiếp vào dấu nhắc PowerShell. Để thực hiện việc này, hãy mở PowerShell và nhập lệnh sau:

Set-ExecutionPolicy RemoteSigned

Nhập "y" hoặc "có" khi được nhắc. Xem Get-Help Set-ExecutionPolicyđể biết thêm thông tin.

Bây giờ hãy mở Trình lập lịch tác vụ và tạo một tác vụ mới với các tham số sau:

  1. Trong tab "Chung", nhập tên và chọn tùy chọn "Chạy với đặc quyền cao nhất"
  2. Trong tab "Kích hoạt", thêm trình kích hoạt mới và đặt tác vụ để chạy hàng ngày
  3. Trong tab "Hành động", thêm một hành động mới:
    • để lại loại là "Bắt đầu một chương trình"
    • đặt trường "Chương trình / tập lệnh" thành C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
    • đặt trường "Thêm đối số" thành -NonInteractive -File "C:\path\to\script.ps1"
  4. Trong tab "Điều kiện", bỏ chọn "Chỉ bắt đầu tác vụ nếu máy tính bật nguồn AC"

Giải thích từng dòng của kịch bản:

ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {

Điều này nhận được một danh sách tất cả các ổ đĩa trong máy tính và lần lượt từng vòng lặp. Các -PSProvider FileSystemtham số được yêu cầu ổ đĩa trở lại mà thôi, bởi vì PowerShell cũng có pseudodrives cho những thứ khác nhau như tâm đăng ký.

Để biết thêm thông tin, hãy xem Get-Help Get-PSDrivehướng dẫn này về xử lý vòng lặp trong PowerShell .

$Path = $Drive.Name + ':\$Recycle.Bin'

Điều này xây dựng đường dẫn đến thư mục Thùng rác trên ổ đĩa hiện tại. Lưu ý việc sử dụng các trích dẫn đơn xung quanh phần thứ hai, để ngăn PowerShell diễn giải $Recycledưới dạng một biến.

Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |

Điều này trả về tất cả các tệp và thư mục con theo đường dẫn đã cho (cái mà chúng ta đã xây dựng bằng lệnh trước đó). Các -Forcetham số là cần thiết để đi vào các thư mục ẩn và hệ thống, và các -Recursethông số làm cho các đệ quy lệnh, tức là. vòng lặp thông qua tất cả các thư mục con là tốt. -ErrorActionlà một tham số tiêu chuẩn cho hầu hết các lệnh PowerShell và giá trị SilentlyContinuelàm cho lệnh bỏ qua lỗi. Mục đích của việc này là để ngăn lỗi cho các ổ đĩa đã được cấu hình để xóa các tệp ngay lập tức. Các |biểu tượng tại các đường ống cuối rất kết quả cho lệnh tiếp theo; Tôi chia nó thành nhiều dòng để dễ đọc hơn.

Để biết thêm thông tin, xem Get-Help Get-ChildItem.

Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |

Điều này chỉ đơn giản là lọc các kết quả từ lệnh trước đó và chỉ trả về những kết quả cũ hơn 30 ngày. $_đề cập đến đối tượng hiện đang được xử lý và thuộc LastWriteTimetính trong trường hợp này đề cập đến ngày và thời gian tệp bị xóa. Get-Datetrả về ngày hiện tại

Để biết thêm thông tin, xem Get-Help Where-ObjectGet-Help Get-Date.

Remove-Item -Recurse

Điều này chỉ đơn giản là xóa các mục được truyền cho nó bởi lệnh trước đó. Các -Recursetham số tự động xóa các nội dung của các thư mục con không rỗng; không có nó, bạn sẽ được nhắc cho các thư mục như vậy.

Để biết thêm thông tin, xem Get-Help Remove-Item.


Tôi sẽ sắp đặt nó. Cảm ơn bạn rất nhiều vì đã giải thích nó rất chi tiết.
hkBattousai

3
Ngoài ra, để thiết lập chính sách thực thi trên toàn cầu, bạn có thể tạo một dòng lệnh đặt nó cho quy trình : powershell -ExecutionPolicy RemoteSigned -File .\myscript.ps1.
jpmc26

Thùng rác trong chế độ xem chi tiết thám hiểm có một cột đặc biệt: "Đã xóa ngày", tôi tự hỏi làm thế nào chúng ta có thể lọc bằng cách sử dụng thay thế? LastWriteTime không phải là một điều tương tự bằng bất kỳ phương tiện nào.
Ciantic

Đã nói quá sớm, tìm thấy điều này: baldwin-ps.blogspot.fi/2013/07/ Khăn nó cũng có một "Ngày đã xóa" trong đó.
Ciantic

4

Thùng rác Windows tự động xóa các tệp cũ hơn khi đạt đến kích thước tối đa: Điều gì xảy ra khi Thùng rác sử dụng hết dung lượng được phân bổ?

Bạn có thể kiểm soát điều này từ các thuộc tính của Thùng Recylce

nhập mô tả hình ảnh ở đây


1
Câu trả lời này không trả lời câu hỏi, vì cơ chế này không tính đến tuổi cụ thể của các tệp; nó chỉ xóa các tệp cũ nhất trong độ tuổi tùy ý để duy trì khối lượng dữ liệu đặt trước.
Jonathan J
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.