因此,在进行备份的过程中,我需要一个批处理脚本,该脚本允许我删除指定目录中的文件(比说的要早3天)。该脚本将被设置为计划任务,每天在指定时间运行。
因此,在进行备份的过程中,我需要一个批处理脚本,该脚本允许我删除指定目录中的文件(比说的要早3天)。该脚本将被设置为计划任务,每天在指定时间运行。
Answers:
如果可以接受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
}
在这里喝。
Remove-Item $File -whatif | out-null
。要作为预定任务运行,该作业应使用您的脚本作为参数指定powershell.exe的完整路径。
forfiles -pc:\ pathtofiles \ -m * .rar -d -5 -c“ cmd / c del @path”
-5
您要删除的文件的年龄在哪里(在这种情况下为5天或更早)。该脚本正在删除.rar
文件- -m *.rar
如果要删除任何文件类型,请删除。
如果您坚持使用批处理文件,则可以使用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 /吗?看到他们全部。您甚至可以使用它来执行增量备份,计划,创建备份配置文件等。
您可能会看到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
我已将此命令作为计划任务运行。
这是我编写的Powershell脚本,可以执行您想要的操作-它的功能也更多。我用它来清除日志和其他临时文件。
清除dem-logs.cmd
powershell.exe -command "& 'c:\purgelogs\purgelogs.ps1' -Filepath D:\SQL\backup\ -filemask *.bak -Maxdays 14 "
purgelogs.ps1:
Param ($filepath, $filemask, $maxdays, [switch]$recurse)
if (($FilePath -eq $null) -or ($FileMask -eq $null) -or ($MaxDays -eq $null)) {
write-host "Usage .\purgelogs.ps1 -filepath [Path] -filemask [Mask] -masdays [Max Days]"
write-host " "
write-host "Example: "
write-host " .\purgelogs.ps1 -filepath c:\temp -filemask *.log -maxdays 30"
break
}
if (Test-Path $FilePath) {
$FilePath += "*"
$Now = Get-Date
$LastWrite = $Now.AddDays(-$MaxDays)
write-host "Last write time " $LastWrite
if ($recurse) {
$Files = get-childitem $FilePath -include $FileMask -recurse | Where {$_.LastWriteTime -le "$LastWrite"}
} else {
$Files = get-childitem $FilePath -include $FileMask | Where {$_.LastWriteTime -le "$LastWrite"}
}
if ($Files -eq $null) {
write-host "No matching files found"
} else {
foreach ($File in $Files)
#You can add -whatif to see the consequence û Remove-item $File -Whatif
{
write-host "Deleting File $File" -foregroundcolor "Red"; Remove-Item $File | out-null
}
}
}
Else
{
Write-Host "The Folder $FilePath Does Not Exist!"
}
这不适用于远程计算机。管理员需要管理多台计算机。下面是可用于删除多台远程计算机中的文件夹而无需登录的脚本。
以下脚本将删除15天以上的文件夹。您可以更改$ days参数。
D $ \ Program Files(x86)\ Motion \ BlackBerry Enterprise Server \ Logs中的研究是Blackberry Log文件夹的UNC路径。您可以更改日志/文件夹所在的目录。
在servers.txt文件中列出所有服务器名称,该文件应与此脚本位于同一目录中。
cd C:\Scripts\Powershellscripts\deletefiles ----> change it to the directory you wanna out this script to
$Days = "15"
$Now = Get-Date
$LastWrite = $Now.AddDays(-$days)
$server = get-content servers.txt
foreach ($node in $server)
{
get-childitem -recurse "\\$node\D$\Program Files (x86)\Research In Motion\BlackBerry Enterprise Server\Logs" | Where-Object {$_.LastWriteTime -le $LastWrite} | remove-item -recurse -force
}
将脚本另存为.ps1并运行它。您可以通过批处理文件计划它。这样,您需要在脚本的开头添加“更改目录”命令。
玩得开心。