回答:
powershellが許容できる場合(サーバー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スクリプトです-それはもう少しします。ログやその他の一時ファイルをクリアするために使用します。
purge-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)\ Research In 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として保存して実行します。バッチファイルでスケジュールできます。この方法では、スクリプトの最初にChange Directoryコマンドを追加する必要があります。
楽しんで。
別のアプローチとして:ファイル作成時間を取得するためにファイルシステムのクエリに頼るのではなく(および、有効期限が切れるまで数日にわたって同じファイルをヒットする)、作成時にファイルを独自のインデックスに追加できます。インデックスは、作成日にちなんで名前が付けられ、既知の場所に1行に1ファイルずつ保存されたファイルと同じくらい単純なものになる可能性があります。
ファイルを作成するマルチスレッド/マルチプロセスアプリがある場合は、インデックスをより洗練された方法で処理する必要があります。
利点は、特定の日に作成された比較的単純に処理されたファイルのリストが常にあり、詳細についてファイルシステムに何度も問い合わせる必要がないことです。
(これはアプリとファイルの作成に依存し、サードパーティではなく、あなたが管理します)。