프로그램/ASP

백업 기간 지난 파일 삭제 명령어 For FIles 사용법.

네오류이 2021. 1. 11. 21:13
728x90
반응형

출처 : http://syskb.blogspot.kr/2013/05/for-files.html

 

 

백업 기간 지난 파일 삭제 명령어 For FIles 사용법.

 

시스템 관리자들이 귀찮아 하는 것중에 하나가 기간이 지난 백업파일을 로컬에서 삭제하는 작업입니다.

 

예전에는 VB를 이용하여 하는 방법을 주로 사용했지만 자비로우신? MS 에서 명령줄로 처리하는 내용을 주셔서 고맙게 적용하였습니다.

 

아래는 MSDN 내용.

 

예제 ) traget 폴더에 있는 수정된지 5일이 지난 모든 파일 삭제

 

ForFiles /P D:\target /S /M * /D -5 /C "cmd /c del /Q @file"

 

엌ㅋ 감오시죠?  좋죠?

 

하지만 UNC(공유폴더) 작업은 안되는 것으로 보여 네트워크 작업을 할때는 맨 아래 VB소스를 참고하세요. 저는 안써봤습니다. 퍼왔음 -_-;

 

소스 출처는 ( http://cafe.naver.com/ilikefox/1032 ) 입니다.

 

For FIles 사용법

 

FORFILES [/P pathname] [/M searchmask] [/S]

         [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]

설명:

    파일(또는 파일 집합)을 선택하고 파일에 명령을  실행합니다. 일괄 작업에 유용합니다.

매개 변수 목록:

    /P    pathname      검색을 시작할 경로를 지정합니다.

                        현재 작업 디렉터리(.)가 기본

                        폴더입니다.

    /M    searchmask    검색 마스크에 따라 파일을 검색합니다.

                        '*'이 기본 검색 마스크입니다.

    /S                  하위 폴더를 포함하도록

                        지정합니다. 예, "DIR /S"

    /C    command       각 파일에 실행할 명령을 지정합니다.

                        명령 문자열을 큰따옴표로 묶어야

                        합니다.

                        "cmd /c echo @file"이 기본 명령입니다.

                        명령 문자열에 다음 변수를 사용할 수

                        있습니다.

                        @file    - 파일 이름을 반환합니다.

                        @fname   - 확장명 없이 파일 이름을

                                   반환합니다.

                        @ext     - 파일의 확장명만

                                   반환합니다.

                        @path    - 파일의 전체 경로를 반환합니다.

                        @relpath - 파일의 상대 경로를

                                   반환합니다.

                        @isdir   - 파일 형식이 디렉터리인 경우 "TRUE"를

                                   반환하고 파일인 경우 "FALSE"를 반환합니다.

                        @fsize   - 파일의 크기(바이트)를

                                   반환합니다.

                        @fdate   - 파일을 마지막으로 수정한 날짜를

                                   반환합니다.

                        @ftime   - 파일을 마지막으로 수정한 시간을

                                   반환합니다.

                        명령줄에 특수 문자를 포함하려면

                         0xHH 형식의 16진수 코드(예, 탭은 0x09)를

                        사용하십시오. 내부 CMD.exe 명령

                        앞에는 "cmd /c"를 사용해야

                        합니다.

    /D    date          지정한 날짜와 마지막 수정한 날짜가 늦거나

                        같은(+) 또는 빠르거나 같은(-) 파일을

                        찾습니다.

                        날짜 형식은 "yyyy-MM-dd"입니다.

                        또한 마지막 수정한 날짜가 현재 날짜에

                        "dd"일을 더한 날짜보다 늦거나 같은(+)

                         또는 현재 날짜에서 "dd"일을 뺀 날짜보다

                        작거나 같은(-) 파일을 찾습니다.

                        유효한 "dd" 범위는 0에서 32768까지입니다.

                        부호를 지정하지 않으면 "+"가 기본값입니다.

    /?                  도움말을 표시합니다.

예:

    FORFILES /?

    FORFILES

    FORFILES /P C:\WINDOWS /S /M DNS*.*

    FORFILES /S /M *.txt /C "cmd /c type @file | more"

    FORFILES /P C:\ /S /M *.bat

    FORFILES /D -30 /M *.exe

             /C "cmd /c echo @path 0x09 was changed 30 days ago"

    FORFILES /D 2001-01-01

             /C "cmd /c echo @fname is new since Jan 1st 2001"

    FORFILES /D +2010-10-11 /C "cmd /c echo @fname is new today"

    FORFILES /M *.exe /D +1

    FORFILES /S /M *.doc /C "cmd /c echo @fsize"

    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

 

 

 

 

 

 

 

UNC (공유폴더) 기간 지난 파일 삭제 비주얼 베이직 스크립트

'************ Start of Code **********************

Option Explicit 

On Error Resume Next 

Dim oFSO, oFolder, sDirectoryPath 

Dim oFileCollection, oFile, sDir 

Dim iDaysOld

' Specify Directory Path From Where You want to clear the old files

sDirectoryPath = \\server1\delete_test

' Specify Number of Days Old File to Delete

iDaysOld = 2

Set oFSO = CreateObject("Scripting.FileSystemObject") 

Set oFolder = oFSO.GetFolder(sDirectoryPath) 

Set oFileCollection = oFolder.Files

For each oFile in oFileCollection

'This section will filter the log file as I have used for for test case 

'Specify the Extension of file that you want to delete 

'and the number with Number of character in the file extension 

 

  If LCase(Right(Cstr(oFile.Name), 3)) = "log" Then

  

   If oFile.DateLastModified < (Date() - iDaysOld) Then 

   oFile.Delete(True) 

   End If 

 

  End If   

Next

Set oFSO = Nothing 

Set oFolder = Nothing 

Set oFileCollection = Nothing 

Set oFile = Nothing

'**************** End of Code *******************

728x90
반응형