FORFILES

JIHYE·2023년 8월 7일
0

[CS지식]

목록 보기
8/8
post-thumbnail

회사에서 Controller.java와 xml 목록을 추출해야 할 일이 있었는데 forfiles를 이용해서 간단하게 추출할 수 있는 방법을 알게 되어 정리해보았다😃

1. FORFILES

  • Windows 기준 cmd창을 열고 forfiles /? 을 치면 사용법이 나옴
  • 파일(또는 파일 집합)을 선택하고 파일에 명령을 실행
  • 일괄 작업에 유용

1.1 사용법

  • 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까지입니다.
                    부호를 지정하지 않으면 "+"가 기본값입니다.

/?                  이 도움말 메시지를 표시합니다.

1.2 사용 예시

  • forfiles /S /M *Controller.java /C "cmd /c echo @isdir @path @fdate @ftime"
    -> 현재 경로의 하위 폴더를 모두 포함하고 파일명이 Controller.java를 포함하는 모든 목록을 추출하고 디렉터리유무, 경로, 수정날짜, 수정시간을 추출

  • forfiles /S /M *V.xml /C "cmd /c echo @path" >> Vxml.txt
    -> 현재 경로의 하위 폴더를 모두 포함하고 V.xml로 끝나는 파일의 경로를 Vxml.txt에 써라

  • Vxml.txt에 있는 목록 맨앞에 copy를 추가하여 원본과 대상 파일명을 작성하여 파일을 복사할 수 있음
    ex) copy test.txt test_copy.txt
    -> test.txt파일을 test_copy.txt 파일로 복사

  • copy 외에도 오래된 파일이나 로그를 삭제하는 방법으로 많이 사용

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

이렇게 유용한 정보를 공유해주셔서 감사합니다.

답글 달기