TODD 의 사과농장

Forfiles 명령어 본문

ETC

Forfiles 명령어

TODD 2012. 2. 28. 08:37


디스크에 쌓인 로그 파일을 주기적으로 정리하려는 과정에, 일정기간이 경과한 로그를 삭제하는 방법을 찾았습니다.
DEL 명령어로는 날짜 인수를 넣을 수 없었는데, Forfiles 명령어에서는 가능하네요.
( Windows 2003, 7 2008 에서 가능합니다. 이하 버젼에서는 추가로 다운로드해야함. )

아래의 예문은 Log 디렉토리에 15일이 경과한 .log 확장자의 파일을 모두 삭제하는 명령어입니다.
forfiles /p D:\Mail\SMTP25\Log /M *.log /D -15 /C "CMD /C del @file"



좀 더 자세한 내용은 아래의 테크넷 정보를 참고하세요.



Forfiles

폴더나 트리에서 일괄 처리할 파일을 선택합니다.

구문

forfiles [/pPath] [/mSearchMask] [/s] [/cCommand] [/d[{+ | -}] [{MM/DD/YYYY | DD}]]

매개 변수

/pPath
검색을 시작할 Path를 지정합니다. 기본 폴더는 현재의 작업 디렉터리이며 마침표(.)를 입력하여 지정합니다.
/mSearchMask
SearchMask에 따라 파일을 검색합니다. 기본 SearchMask*.*입니다.
/s
forfiles가 하위 디렉터리에서 검색하도록 지정합니다.
/cCommand
각 파일에 대해 지정된 Command를 실행합니다. 공백이 있는 명령 문자열은 따옴표로 묶어야 합니다. 기본 Command"cmd /c echo @file"입니다.
/d[{+ | -}] [{MM/DD/YYYY | DD}]
지정된 날짜나 이후(+) 날짜 또는 이전(-) 날짜의 파일을 선택합니다. 여기서 MM/DD/YYYY는 지정된 날짜이고 DD는 현재 날짜에서 DD일을 뺀 날짜입니다. + 또는 -를 지정하지 않으면 +가 사용됩니다. DD의 유효 범위는 0 - 32768입니다.
/?
명령 프롬프트에 도움말을 표시합니다.

설명

  • Forfiles는 배치 파일에서 가장 일반적으로 사용되는 명령입니다.
  • Forfilesdir /s와 유사합니다.
  • 다음 표는 /cCommand 명령 문자열에서 사용할 수 있는 변수 목록을 보여 줍니다.

    변수 설명

    file

    파일 이름

    @fname

    확장명을 제외한 파일 이름

    @ext

    파일 확장명

    @path

    파일의 전체 경로

    @relpath

    파일의 상대 경로

    @isdir

    파일 형식이 디렉터리이면 TRUE이고 그렇지 않으면 FALSE입니다.

    @fsize

    파일 크기(바이트)

    @fdate

    마지막으로 수정한 파일의 날짜 스탬프

    @ftime

    마지막으로 수정한 파일의 시간 스탬프

  • Forfiles를 사용하면 여러 파일에 대해 명령을 실행하거나 여러 파일로 인수를 전달할 수 있습니다. 예를 들어 트리에서 확장명이 *.txt인 모든 파일에 대해 TYPE 명령을 실행할 수 있습니다. 또는 "Myinput.txt" 파일을 첫 번째 인수로 사용하여 C:\ 드라이브의 모든 배치 파일(*.bat)을 실행할 수 있습니다.
  • Forfiles를 사용하여 다음 작업 중 하나를 수행할 수 있습니다.
    • /d를 사용하여 절대 또는 상대 날짜별로 파일을 선택합니다.
    • @fsize(파일 크기)와 @fdate(파일 날짜) 같은 변수를 사용하여 파일의 보관 트리를 작성합니다.
    • @isdir 변수를 사용하여 파일을 디렉터리와 구분합니다.
    • 명령줄에 특수 문자를 포함시키고 16진수 코드 0xHH로 문자를 묶어 출력 형식을 지정합니다.
  • Forfiles는 파일 하나만 처리하도록 디자인된 도구에 대해 recurse subdirectories 플래그를 구현하여 작동합니다.

C: 드라이브에 있는 모든 배치 파일의 목록을 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m*.bat /c"cmd /c echo @file is a batch file"

C: 드라이브에 있는 모든 디렉터리의 목록을 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m*.* /c"cmd /c if @isdir==true echo @file is a directory"

C: 드라이브에 있는 100일 이상된 모든 파일의 목록을 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m*.* /dt-100 /c"cmd /c echo @file : date >= 100 days"

C: 드라이브에 있는 1993년 1월 1일 이전의 모든 파일을 나열하고 해당 파일에 대해 "file is quite old!"를 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m*.* /dt-01011993 /c"cmd /c echo @file is quite old!"

C: 드라이브에 있는 모든 파일의 확장명을 열 형식으로 나열하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09" With:

C: 드라이브에 있는 모든 배치 파일의 목록을 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m *.bat /c "cmd /c echo @file is a batch file"

C: 드라이브에 있는 모든 디렉터리의 목록을 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m *.* /c "cmd /c if @isdir==true echo @file is a directory"

C: 드라이브에 있는 100일 이상된 모든 파일의 목록을 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m *.* /d t-100 /c "cmd /c echo @file : date >= 100 days"

C: 드라이브에 있는 1993년 1월 1일 이전의 모든 파일을 나열하고 해당 파일에 대해 "file is quite old!"를 표시하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m *.* /d t-01011993 /c "cmd /c echo @file is quite old!"

C: 드라이브에 있는 모든 파일의 확장명을 열 형식으로 나열하려면 다음과 같이 입력합니다.

forfiles /p c:\ /s /m*.* /c "cmd /c echo extension of @file is 0x09@ext0x09"

Comments