회사에서 Controller.java와 xml 목록을 추출해야 할 일이 있었는데 forfiles를 이용해서 간단하게 추출할 수 있는 방법을 알게 되어 정리해보았다😃
Windows
기준 cmd
창을 열고 forfiles /?
을 치면 사용법이 나옴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
/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
외에도 오래된 파일이나 로그를 삭제하는 방법으로 많이 사용
이렇게 유용한 정보를 공유해주셔서 감사합니다.