因此,在进行备份工作时,我需要一个批处理脚本,该脚本允许我删除指定目录中超过 3 天的文件。此脚本将被设置为计划任务,每天在指定时间运行。
答案1
如果 powershell 可以接受(应该是,因为它在 Server 2008+ 上默认启用)请尝试以下操作:
$numberOfDays = 3
$Now = Get-Date
$TargetFolder = “C:\myoldfiles”
$LastWrite = $Now.AddDays(-$numberOfDays)
$Files = get-childitem $TargetFolder -include *.bak, *.x86 -recurse | Where {$_.LastWriteTime -le “$LastWrite”}
foreach ($File in $Files)
{
write-host “Deleting File $File” -foregroundcolor “Red”;
Remove-Item $File | out-null
}
资源这里。
答案2
forfiles -pc:\pathtofiles\ -m *.rar -d-5-c“cmd /c 删除@路径”
-5
您要删除的文件的年龄在哪里(在本例中为 5 天或更长时间)。此脚本正在删除.rar
文件 --m *.rar
如果您想删除任何文件类型,请删除。
答案3
如果您坚持使用批处理文件,那么 Robocopy.exe 就是您的答案。它速度快(多线程)且非常强大。对于您的场景,您可以使用以下内容作为指南:
:: Moves dir & files older than 3 days to i:\Destination
:: Wildcards acceptable
robocopy i:\Source\ i:\Destination\ /MOVE /MIR /MINAGE:3 /ETA
:: Removes the destination tree
rd /s /q i:\destination
选项列表很长,请执行 robocopy /? 来查看所有选项。您甚至可以使用它进行增量备份、计划、创建备份配置文件等。
答案4
您可能会看看 Horst Schaeffer 的 DelAge32:
http://home.mnet-online.de/horst.muc/wbat32.htm#top
DelAge32 - ver. 2.3 (c) 2003-2008, Horst Schaeffer
Deletes or moves files (path with file pattern) by age (number of days)
Syntax: DelAge32 filespec age [options]
Options:
/created /accessed /modified (default) - file stamp used to evaluate age
/includeRO - include read-only files
/includeH - include hidden files
/includeS - include system files
/includeRHS -include read-only, hidden and system files
/recurse - include subdirectories
/subonly - /recurse excluding initial directory
/rd - remove empty subdirectories
/move path - move files to specified path
/preview - list, but no action
/quiet - no output
您的命令可以简单如下:
delage32.exe c:\logdirectory\*.log 3
我已将此命令作为计划任务运行。