我想要一个资源管理器插件,它可以在一段时间后从回收站中删除旧文件。
比如我想设置时间限制为30天,当我在Windows中删除一个文件时,软件会记录它的删除时间,每天扫描已删除文件,如果文件已存在30天,则删除。
有类似的软件吗?
答案1
2023 年,Windows 10/11:使用存储感知
- 打开存储感知选项:Win+ I,系统在侧面标签栏中,向下滚动到贮存并选择它,向下滚动到 Storage Sense,然后选择它,不仅仅是启用(
>
右侧的图标表示它有自己的设置页面):默认情况下它可能过于激进。Win+I然后在搜索框中输入“存储感知”也会带您到那里。- 如果你没看到贮存或者存储感知在它下面(如果我没记错的话,它是默认启用的,以防万一),启用Windows 存储管理可选功能:在同一个“设置”小程序中,在搜索框中输入“功能”,使用“查看功能”按钮,在其搜索框中输入“存储”,然后选择Windows 存储管理。
- 勾选“清理临时文件”下的复选框。这将清理
%TEMP%
目录,因为目录往往会堆积废弃文件。没有理由不清理它,但你有一个选择。如果你不知道临时目录是什么,一定要启用此选项。这些是非用户文件。 - 在“自动用户内容清理”下,切换启用开关。
- 将“运行存储感知”频率设置为“每天”。这对系统没有任何负担。
- 将“删除回收站中的文件”设置为您想要的保留期限。
- 注意力:“删除我的下载文件夹中的文件ETC。“设置为除绝不默认情况下。不要错过此选项以避免不受欢迎的意外。在添加存储感知之前,下载目录中从未自动清除被忽略的文件。它可能有用;我只是明确表示这是一个重大的行为变化。选择绝不如果您想保留现有的(非)策略。保留期是从文件的最后访问时间开始计算的,而不是从文件下载的时间开始计算的,并且每次读取文件时都会重置。
- 如果你使用 OneDrive,你可以选择清理仅限本地之前打开的本地缓存的 OneDrive 文件的副本。云中的文件不会被删除,只有本地缓存的副本会被删除。您之前在 OneDrive 中标记为“在此计算机上永久保留本地副本”的文件的缓存副本不受计划清理的影响。
组策略
如果您使用组策略配置多台计算机,您还可以更精细地控制保留期限,而不仅仅是具有 3-4 个预设期限的下拉选择器。使用 GP MMC 控制台中的过滤器搜索存储感知。组策略在 Windows 10 和 11 的家庭版中不可用。
请帮忙说明这个答案:我希望说明清楚,但截图可能会更好。我无法发布好的截图,因为我的所有机器都使用 GP 设置,因此大多数设置都呈灰色,并且会显示“此计算机由管理ETC。” 。这对于家庭用户来说可能看起来太混乱了,无法作为一个很好的例子。非常欢迎并赞赏对“系统 > 存储 > 存储感知”页面进行干净的屏幕截图!
答案2
我不知道有任何 Explorer 插件,但像 Windows 中的大多数东西一样,这可以通过 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
}
将此脚本保存为带有扩展名的文本文件.ps1
。然后,您可以使用任务计划程序定期运行此脚本。
但是,首先,您需要允许执行 PowerShell 脚本,因为默认情况下,您只能执行直接在 PowerShell 提示符中输入的命令。为此,请打开 PowerShell 并输入以下命令:
Set-ExecutionPolicy RemoteSigned
出现提示时输入“y”或“yes”。请参阅Get-Help Set-ExecutionPolicy
了解更多信息。
现在打开任务计划程序并使用以下参数创建一个新任务:
- 在“常规”选项卡下,输入名称并勾选“以最高权限运行”选项
- 在“触发器”选项卡下,添加新的触发器并将任务设置为每天运行
- 在“操作”选项卡下,添加一个新操作:
- 将类型保留为“启动程序”
- 将“程序/脚本”字段设置为
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
- 将“添加参数”字段设置为
-NonInteractive -File "C:\path\to\script.ps1"
- 在“条件”选项卡下,取消选中“仅当计算机使用交流电源时才启动任务”
脚本的逐行解释:
ForEach ($Drive in Get-PSDrive -PSProvider FileSystem) {
这将获取计算机中所有驱动器的列表并逐个循环。该-PSProvider FileSystem
参数仅在返回磁盘驱动器时才需要,因为 PowerShell 还具有用于注册表配置单元等各种其他内容的伪驱动器。
有关详细信息,请参阅For more information, seeGet-Help Get-PSDrive
和本教程介绍了 PowerShell 中的循环处理。
$Path = $Drive.Name + ':\$Recycle.Bin'
这将构造当前驱动器上回收站文件夹的路径。请注意,第二部分使用单引号,以防止 PowerShell 将其解释$Recycle
为变量。
Get-ChildItem $Path -Force -Recurse -ErrorAction SilentlyContinue |
这将返回给定路径(我们用上一个命令构建的路径)下的所有文件和子文件夹。-Force
需要该参数才能进入隐藏文件夹和系统文件夹,该-Recurse
参数使命令递归,即循环遍历所有子目录。-ErrorAction
是大多数 PowerShell 命令的标准参数,该值SilentlyContinue
使命令忽略错误。这样做的目的是防止已配置为立即删除文件的驱动器出现错误。|
最后的符号将结果传送到下一个命令;为了便于阅读,我将其分成几行。
有关详细信息,请参阅For more information, seeGet-Help Get-ChildItem
。
Where-Object { $_.LastWriteTime -lt (Get-Date).AddDays(-30) } |
这只是过滤了上一个命令的结果并仅返回超过 30 天的结果。$_
指的是当前正在处理的对象,LastWriteTime
在这种情况下的属性指的是删除文件的日期和时间。Get-Date
返回当前日期。
有关详细信息,请参阅For more information, seeGet-Help Where-Object
和Get-Help Get-Date
。
Remove-Item -Recurse
这只会删除上一个命令传递给它的项目。该-Recurse
参数会自动删除非空子文件夹的内容;如果没有它,系统会提示您输入此类文件夹。
有关详细信息,请参阅For more information, seeGet-Help Remove-Item
。
答案3
回收站是一款适用于 Windows 的简单应用程序,可完全满足您的要求。请参阅:http://www.fcleaner.com/recyclebinex
在 Mac OSX 上,榛做同样的事情(以及其他的事情):http://www.noodlesoft.com/
KDE 等离子默认提供此功能,因此如果您正在运行 Kubuntu、Arch、Chackra Linux 或任何其他带有 KDE 的发行版,您已经拥有此功能。只需查看 Dolphin 配置窗口即可。
在 Ubuntu Unity、Gnome 或任何其他提供标准 FreeDesktop.org 垃圾功能的 gnu/linux 桌面环境中,您可以使用自动垃圾桶做这件事:http://www.logfish.net/pr/autotrash/
类似的行为也可以通过以下方式实现垃圾处理,也可以用于直接从命令行将文件发送到垃圾箱。请参阅:https://github.com/andreafrancia/trash-cli
大多数电子邮件应用程序的“垃圾箱”也具有此功能。
Android 上默认没有“垃圾桶”(当你删除它时,它就永远消失了),但你可以安装以下应用程序垃圾桶以某种方式获得类似的功能:http://www.dumpsterapp.mobi/
如上所述,我认为自动从垃圾箱中删除旧文件是很棒的功能实现它更加实用,因为它减少了混乱(您 3 个月前删除的那些文件是否仍然与您有关?以及同一文件的所有旧版本?)并且更容易找到您想要恢复的内容(毕竟,这就是我们的计算机上有“垃圾桶”的原因),仍然是安全的。
如果您经常使用文本文件(代码或散文),那么这个功能就更加有用了,因为大多数时候这些文件都很小,不需要太多空间(因此可能永远不会达到垃圾箱配额)。这样,您甚至不需要定期“清空垃圾箱”。您只知道,如果需要,您有时间恢复“已删除”的文件。
看看市面上的大多数云服务(Dropbox、Google Drive、Simplenote 等),它们中的大多数似乎对已删除的文件都有类似的政策。我真的认为这是处理文件的正确方法,他们似乎也这么认为。
答案4
当 Windows 回收站达到其最大大小时,它会自动删除较旧的文件:当回收站用完其分配的空间时会发生什么?
您可以从回收站的属性中控制这一点