본문 바로가기

프로그래밍/Etc

[Etc] Windows Server batch script forfiles

Windows Server 로그 파일 자동 삭제 배치 스크립트

forfiles /p D:\log /s /m *.log /d -7 /c "cmd /c del @FILE"


Forfiles

적용 대상: Windows Server 2003 이후 버전

Forfiles

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

구문

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

매개 변수

/p Path

검색을 시작할 Path를 지정합니다. 기본 폴더는 현재의 작업 디렉터리이며 마침표(.)를 입력하여 지정합니다.

/m SearchMask

SearchMask에 따라 파일을 검색합니다. 기본 SearchMask *.*입니다.

/s

forfiles가 하위 디렉터리에서 검색하도록 지정합니다.

/c Command

각 파일에 대해 지정된 Command를 실행합니다. 공백이 있는 명령 문자열은 따옴표로 묶어야 합니다. 기본 Command "cmd /c echo @file"입니다.

/d[{+ | -}] [{MM/DD/YYYY | DD}]

지정된 날짜나 이후(+) 날짜 또는 이전(-) 날짜의 파일을 선택합니다. 여기서 MM/DD/YYYY는 지정된 날짜이고 DD는 현재 날짜에서 DD일을 뺀 날짜입니다. + 또는 -를 지정하지 않으면 +가 사용됩니다. DD의 유효 범위는 0 - 32768입니다.

/?

명령 프롬프트에 도움말을 표시합니다.

설명

  • Forfiles는 배치 파일에서 가장 일반적으로 사용되는 명령입니다.
  • Forfiles dir /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"