我有一个小型服务器,它开始变得非常满。
我想删除所有很长时间未打开或修改的旧文件。
有没有办法按打开日期(以及从最后打开到最近打开的订单表格)搜索整个驱动器?
答案1
奇怪的是,我正在运行一个项目来整理我公司的旧/历史数据。
我正在使用下面编写的 powershell 脚本,它将输出它遇到的所有文件的 CSV 文件。然后我使用 Excel 对数据进行排序,选择对我最有用的列。
Get-ChildItem C:\*path* -Recurse | Select-Object Name, CreationTime, LastAccessTime, Directory, @{Name="Kbytes";Expression={$_.Length / 1Kb}} | Export-CSV xxxxxxx.csv
您可以复制上述内容然后粘贴到记事本中,将路径更改为保存文件的位置(本地最好,尽管映射驱动器也可以),然后另存为“filename.ps1”
如果您在尝试运行 powershell 脚本时遇到任何错误,请告诉我,我可以提供相应的建议。
答案2
电源外壳:
Get-ChildItem \ -Recurse | Sort-Object LastAccessTime | Select-Object FullName, LastAccessTime
这将找到当前驱动器上的所有文件和文件夹,按上次访问时间升序排序,并显示其完整路径和上次访问时间。
这可能需要一段时间,尤其是在系统驱动器或其他包含大量文件和/或文件夹的驱动器上。但是,你应该不是在选择清理系统驱动器或存储程序文件或数据的区域中的文件时,请单独使用此标准 - 如果这样做,可能会严重破坏系统。仅将此标准用于文档、图片、视频等用户数据。
PowerShell 还为您提供了更多处理数据的选项。正如 @CharlesH 在他的脚本中所述,您可以将输出转储到 CSV 文件中,而不是仅将其留在控制台中。您还可以根据文件大小和其他属性进行一些过滤,或者格式化数据以显示更多或更少的数据并以对您更友好的方式显示它。
答案3
另一种方法是使用 TCChttp://jpsoft.com/all-downloads/downloads.html(LE 版本是免费的)。这是 CMD 的升级版本,它允许您按每个文件日期进行排序和选择,例如:
dir /t:a /od - lists files in access time order;
dir /[da1980-1-1,2008-12-31] - selects files not accessed since 2008;
del * /s /[da1980-1-1,2008-12-31] /n - shows deletable files not accessed since 2008;
del * /s /[da1980-1-1,2008-12-31] - deletes files not accessed since 2008.
如果您希望存档文件而不是删除文件,也可以将范围选择与copy
和命令一起使用。move
如果(像我一样)您发现 PowerShell 有点令人生畏,您可能会更喜欢这个。