(n)日よりも古い特定のフォルダー内のすべてのファイルを削除するための優れたWindowsコマンドラインオプションとは何ですか?
また、これらのファイルが何千もある可能性があることに注意してください。したがってforfiles
、シェルを使用することcmd
はここでは素晴らしいアイデアではありません。かなり厄介なハックだと思うので、もっとうまくやれるかどうか見てみましょう!
理想的には、Windows Server 2008に組み込まれている(または簡単にインストールできる)ものです。
(n)日よりも古い特定のフォルダー内のすべてのファイルを削除するための優れたWindowsコマンドラインオプションとは何ですか?
また、これらのファイルが何千もある可能性があることに注意してください。したがってforfiles
、シェルを使用することcmd
はここでは素晴らしいアイデアではありません。かなり厄介なハックだと思うので、もっとうまくやれるかどうか見てみましょう!
理想的には、Windows Server 2008に組み込まれている(または簡単にインストールできる)ものです。
回答:
私はもう少し見て回ると、Powershellの方法を見つけました:
指定したフォルダーから8日以上経過したすべてのファイルを削除します(プレビュー付き)
dir |? {$_.CreationTime -lt (get-date).AddDays(-8)} | del -whatif
(-whatifを削除して、それを実現します)
JeffのPowerShellコマンドが大好きですが、PowerShellを使用しないWindowsマシン用の代替vbsソリューションについては、次の方法を試すことができます。
名前を付けて保存し<filename>.vbs
て実行:
<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]
3番目のパラメーター[Action]
はオプションです。それなしでは、古いファイル<NoDaysSinceModified>
がリストされます。それD
より古いファイルを削除するように設定すると<NoDaysSinceModified>
例
PurgeOldFiles.vbs "c:\Log Files" 8
8日以上経過したすべてのファイルをリストしますc:\Log Files
PurgeOldFiles.vbs "c:\Log Files" 8 D
8日以上経過したすべてのファイルを削除しますc:\Log Files
注:これは、SQLServerCentral.comのHaidong Jiのスクリプトの修正バージョンです
Option Explicit
on error resume next
Dim oFSO
Dim sDirectoryPath
Dim oFolder
Dim oFileCollection
Dim oFile
Dim iDaysOld
Dim fAction
sDirectoryPath = WScript.Arguments.Item(0)
iDaysOld = WScript.Arguments.Item(1)
fAction = WScript.Arguments.Item(2)
Set oFSO = CreateObject("Scripting.FileSystemObject")
set oFolder = oFSO.GetFolder(sDirectoryPath)
set oFileCollection = oFolder.Files
If UCase(fAction) = "D" Then
'Walk through each file in this folder collection.
'If it is older than iDaysOld, then delete it.
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
oFile.Delete(True)
End If
Next
else
'Displays Each file in the dir older than iDaysOld
For each oFile in oFileCollection
If oFile.DateLastModified < (Date() - iDaysOld) Then
Wscript.Echo oFile.Name & " " & oFile.DateLastModified
End If
Next
End If
'Clean up
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
Set fAction = Nothing
実際にはコマンドラインではありませんが、LINQPadをC#スクリプティングホストとして使用するのが好き
です。
var files = from f in Directory.GetFiles(@"D:\temp", "*.*", SearchOption.AllDirectories)
where File.GetLastWriteTime(f) < DateTime.Today.AddDays(-8)
select f;
foreach(var f in files)
File.Delete(f);
これは私が使用しているものですので、このhttp://sourceforge.net/projects/deloldを見てください。
シンプルだが機能します。delold -d 14現在のフォルダー内の14日より古いファイルを削除します。
私がpowershellの前に使用していた別の選択肢:
http://lifehacker.com/133190/geek-to-live--hard-drive-janitor