Windows
디렉토리 내의 특정 기간이 지난 파일 삭제 스크립트
채윤아빠
2009. 4. 11. 16:45
아래는 WSH 로 만든 스크립트로, 서버의 특정 디렉토리 아래의 있는 파일들 중에서 지정한 기간이 지난 파일을 삭제해주는 스크립트입니다.
아래 소스에서 45줄의 주석을 제거하셔야 실제 파일이 삭제됩니다. 현재는 주석으로 막아 놔서 메시지는 남지만 실제 파일이 삭제되지는 않습니다.
참고시시기 바랍니다.
Option Explicit ON ERROR RESUME NEXT Err.Clear Dim strRootPath, nDays, nDeleteSubDir nDays = 7 nDeleteSubDir = 0 If WScript.Arguments.Count = 0 Then WScript.Echo " 사용법 : cscript DeleteSubDirNFiles.vbs[ ] [DEL_EMPTY_DIR=0]" Wscript.Quit(0) End If If WScript.Arguments.Count > 0 Then strRootPath = WScript.Arguments(0) ' 첫번째 파라미터 : 삭제할 파일이 들어 있는 디렉토리 End If If WScript.Arguments.Count > 1 Then nDays = CInt(WScript.Arguments(1)) ' 두번째 파라미터 : 지정된 날짜가 지난 파일 삭제 End If If WScript.Arguments.Count > 2 Then nDeleteSubDir = CInt(WScript.Arguments(2)) ' 세번째 파라미터 : 빈 하위 디렉토리를 삭제할 것인가? 0 - 삭제안함 / 1 - 삭제함 End If If nDays = 0 Then WScript.Echo "오류: 두 번째 파라미터에 잘못된 값이 설정되었습니다." WScript.Echo " 두번째 파라미터는 삭제할 기준 범위 숫자 값(1이상)으로 지정한 숫자만큼의 이전 날짜의 지난 파일을 삭제처리하게 됩니다." Wscript.Quit(0) End If Dim oFSO Set oFSO = CreateObject("Scripting.FileSystemObject") Dim oFolder, oSubFolder Set oFolder = oFSO.GetFolder(strRootPath) DeleteSubDirNFiles oFolder, nDays, nDeleteSubDir ' 지정된 폴더의 파일 삭제 Public Sub DeleteFiles(oFolder, nDays, nDeleteSubDir) Dim oFile For Each oFile In oFolder.Files If Int(Now() - oFile.DateLastModified) >= nDays Then 'oFile.Delete WScript.Echo oFile.Name & " 'Deleted'" End If Next End Sub Public Sub DeleteSubDirNFiles(oFolder, nDays, nDeleteSubDir) Dim oSubFolder DeleteFiles oFolder, nDays, nDeleteSubDir ' 폴더내의 모든 파일 삭제 ' 지정한 루트 폴더에 포함된 서브 폴더의 삭제 For Each oSubFolder In oFolder.SubFolders WScript.Echo "DeleteSubDir Enter : " & oSubFolder.name DeleteSubDirNFiles oSubFolder, nDays, nDeleteSubDir ' 재귀호출 If nDeleteSubDir = 1 Then oSubFolders.Delete End If Next End Sub
728x90
반응형