我是一名狂热的游戏玩家。我有一个专门用于录制游戏的驱动器。我打算将所有内容都录制到这个 500GB SSD 上,并且只抓取值得注意的内容。为了实现这一点,我想在驱动器上设置保留策略,以便删除任何超过 12 小时的文件。
由于 Windows Server 搜索结果数量巨大,因此在 Google 上搜索此问题很困难。是否有一些功能或软件可用于实现此目的?
答案1
我会使用批处理脚本或 powershell 脚本。创建批处理文件或 powershell 脚本后,您可以在任务计划程序中创建一个计划任务,例如每 1 小时运行一次。
但我可能会将其用于命令提示符(仅在全天):
forfiles -p "D:\Videos" -s -m *.* -d -1 -c "cmd /c del @path"
在 Powershell 中使用此命令(这将花费数小时):
Get-ChildItem -Path "D:\Videos" -Recurse -force -ErrorAction SilentlyContinue | where {$_.LastwriteTime -lt (Get-Date).AddHours(-12) } | Remove-Item -Verbose -Force -Recurse -ErrorAction SilentlyContinue
只需将其替换D:\Videos
为恢复这些视频的实际目录即可。将值替换为1
批处理示例中的天数。将值替换为-12
多少小时前的值(保留负数),然后根据您要执行的操作将其替换addHours
为addMinutes
或addMonths
或addSeconds
或。addYears
祝你好运!
答案2
简而言之,您可以使用Linux“查找”命令的独立 GNUWin32 版本删除任何超过 X 分钟的文件。
设置
- 从上面的链接下载二进制文件(findutils-4.2.20-2-bin)和依赖项(findutils-4.2.20-2-dep).zip 文件。
- 提取依赖项文件夹的内容并将其复制到二进制文件夹(可以随意覆盖)。
- 改名查找程序在“bin”文件夹中(例如查找工具) 以避免与任何 Windows 命令冲突。
假设上述重命名,查找和删除 12 小时及更早的文件的命令将是:
gnu_find.exe "C:\Path\To\Files" ! -mmin -720 -type f -delete
例如,-720 代表分钟数(本例中为 60*12)。不要省略 !(否定)选项,因为如果没有它,文件在下面(少于)12 小时将被删除。
请注意能离开-删除如果您只想预览它将处理的文件。
GNUWin32 Find 还支持-姓名允许使用星号进行模式匹配的选项,例如
gnu_find.exe "C:\Path\To\Files" ! -mmin -720 -type f -name "text*" -delete
关于名称的注意事项
- 意识到-姓名应该总是出现在-删除否则不会产生效果。
- 您可以随意使用星号进行模式匹配(包括在多个位置),但要小心不要在星号中包含句点(即,如果文件扩展名匹配是一个问题,只需使用“filename*”或“*ext”)。这与 Windows 命令行如何解释事物有关。
- 您可以找到特定的名称(例如“filename.txt”),但在 Windows 上,您必须包含扩展名,因为 GNUWin32 Find 会考虑整个文件名字符串(“filename”<>“filename.txt”)
自动化
您可以使用任务计划程序自动运行程序,但正如我在第一个链接中详细说明的那样,它可能不是一个更好的选择。我个人推荐使用 Linux“cron”风格的应用程序(如该答案中所述)。
Windows 10
上述内容可能适用于任何版本的 Windows,但最新的 Windows 10 版本应该能够运行Ubuntu Linux 子系统。“find”和“cron”非常基础,应该可以用到(不过这个版本的“cron”似乎与打开窗口有关,所以可能不完全适合您的目的)。