(n) 일이 지난 특정 폴더의 모든 파일을 삭제하는 데 유용한 Windows 명령 줄 옵션은 무엇입니까?
또한 수천 개의 명령 셸을 생성하는 것을 좋아하지 않는 한이 파일이 수천 개가 될 수 있으므로 forfiles
셸을 사용하는 cmd
것은 좋은 생각이 아닙니다. 나는 꽤 불쾌한 해킹을 고려하므로 더 잘 할 수 있는지 보자!
이상적으로는 Windows Server 2008에 내장 된 (또는 쉽게 설치할 수있는) 것입니다.
(n) 일이 지난 특정 폴더의 모든 파일을 삭제하는 데 유용한 Windows 명령 줄 옵션은 무엇입니까?
또한 수천 개의 명령 셸을 생성하는 것을 좋아하지 않는 한이 파일이 수천 개가 될 수 있으므로 forfiles
셸을 사용하는 cmd
것은 좋은 생각이 아닙니다. 나는 꽤 불쾌한 해킹을 고려하므로 더 잘 할 수 있는지 보자!
이상적으로는 Windows Server 2008에 내장 된 (또는 쉽게 설치할 수있는) 것입니다.
답변:
Jeff의 PowerShell 명령을 좋아하지만 PowerShell이없는 Windows 시스템의 대체 vbs 솔루션의 경우 다음을 시도 할 수 있습니다.
다른 이름으로 저장 <filename>.vbs
하고 실행하십시오.
<filename>.vbs <target_dir> <NoDaysSinceModified> [Action]
세 번째 매개 변수 [Action]
는 선택 사항입니다. 파일이 없으면 파일보다 오래된 파일 <NoDaysSinceModified>
이 나열됩니다. 이 설정과 마찬가지로 D
그것보다 오래된 파일 삭제<NoDaysSinceModified>
예
PurgeOldFiles.vbs "c:\Log Files" 8
것입니다 목록 에있는 모든 파일을 c:\Log Files
보다 오래된 팔일 된
PurgeOldFiles.vbs "c:\Log Files" 8 D
합니다 삭제 에있는 모든 파일을 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 #을 스크립팅 호스트로 :
(단지 나에게 명령 줄의 C # 스크립트에 대한 아이디어를 준 거시기 일품 VBS 파일)
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