
컴퓨터를 사용하다 보면, 특정 조건에 맞는 수많은 파일을 한 번에 처리해야 할 때가 있습니다. 예를 들어, 30일이 지난 오래된 로그 파일을 자동으로 삭제하거나, 특정 확장자를 가진 파일을 일괄적으로 다른 폴더로 옮기는 작업 등입니다. 윈도우 운영체제에서 이러한 작업을 효율적으로 수행하게 도와주는 강력한 도구가 바로 forfiles 명령어입니다. 이 가이드는 forfiles 사용법의 기본부터 심화된 forfiles 옵션 활용을 통해 파일 및 폴더 관리의 자동화 수준을 한 단계 높여줄 것입니다.
이 명령어는 윈도우의 배치(Batch) 파일 또는 CMD(명령 프롬프트) 환경에서 실행되며, 대량의 데이터 처리나 시스템 유지보수 스크립트 작성에 필수적입니다. 복잡해 보일 수 있지만, 핵심적인 옵션만 이해하면 누구나 쉽게 마스터할 수 있습니다.
forfiles 명령어란 무엇인가?
forfiles 명령어는 윈도우 시스템에서 파일 및 폴더를 선택하고, 선택된 항목에 대해 특정 명령을 실행하는 데 사용되는 명령줄 유틸리티입니다. 이 도구의 가장 강력한 특징은 파일의 날짜(생성, 수정, 액세스 시간)를 기준으로 필터링할 수 있다는 점입니다. 따라서 파일 보존 정책을 자동화하거나 주기적인 시스템 정리 작업을 스케줄링하는 데 이상적입니다.
forfiles는 단순한 파일 검색을 넘어, 검색된 파일 목록 각각에 대해 사용자가 지정한 명령어(예: 삭제, 이동, 이름 변경 등)를 실행할 수 있는 '반복 실행(Iteration)' 기능을 제공합니다. 이는 마치 '각각의 파일에 대해서 이 명령을 실행하라'고 컴퓨터에 지시하는 것과 같습니다.
forfiles 사용법의 기본 구조
forfiles를 성공적으로 사용하려면, 명령의 기본 구문을 명확히 이해해야 합니다. 마치 레고 블록을 조립하듯, 각 옵션은 특정 역할을 수행합니다.
기본 구문 해부
forfiles 명령의 기본 구문은 다음과 같습니다.
forfiles /P [경로] /M [파일 마스크] /D [날짜 필터] /C "명령어"
여기서 네 가지 핵심 옵션의 역할은 다음과 같습니다:
/P [경로]: 파일 검색을 시작할 시작 디렉터리(경로)를 지정합니다. (Path)/M [파일 마스크]: 검색할 파일의 이름 패턴을 지정합니다. (Mask, 예:.log,test.txt)/D [날짜 필터]: 날짜를 기준으로 파일을 필터링하는 옵션입니다. 양수는 미래 날짜, 음수는 과거 날짜를 의미합니다. (Date, 예:/D -30은 30일 이전에 수정된 파일)/C "명령어": 찾은 각 파일에 대해 실행할 명령을 지정합니다. 이 명령은 항상 큰따옴표(") 안에 넣어야 합니다. (Command)
이 구조만 잘 기억하면, 대부분의 forfiles 사용법 시나리오에 적용할 수 있습니다.
/C 옵션에서 사용되는 특수 변수
/C 옵션 안에서 특정 파일 정보를 명령어에 전달하기 위해 @ 기호로 시작하는 특수 변수를 사용합니다. 이 변수들을 활용하면 파일 삭제, 이름 변경 등 다양한 작업을 정교하게 수행할 수 있습니다.
자주 쓰이는 주요 변수
@file: 현재 처리 중인 파일의 전체 이름 (경로 포함, 큰따옴표로 묶여서 처리됨)@fname: 현재 처리 중인 파일의 이름만 (확장자 제외)@ext: 현재 처리 중인 파일의 확장자@isdir: 처리 중인 항목이 디렉터리이면TRUE, 파일이면FALSE@fdate: 파일의 최종 수정 날짜
핵심 forfiles 옵션 상세 해설
forfiles 옵션을 세밀하게 조정하면 원하는 파일을 정확하게 타겟팅할 수 있습니다. /S 옵션은 특히 중요한데, 재귀적인 파일 검색을 가능하게 해 줍니다.
재귀적 검색 옵션: /S
forfiles는 기본적으로 /P로 지정된 폴더 내부의 파일만 검색합니다. 만약 하위 폴더까지 모두 검색하려면 /S 옵션을 추가해야 합니다. 이 옵션은 복잡한 폴더 구조 내의 파일을 한 번에 정리할 때 필수적입니다.
forfiles /P C:\Logs /S /M *.bak /C "cmd /c del @file"
(위 예시는 C:\Logs 폴더와 그 하위 폴더 전체에서 *.bak 파일을 찾아 삭제합니다.)
날짜 필터 옵션: /D
/D [일수] 옵션은 오늘 날짜를 기준으로 지정된 일수만큼 이전 또는 이후에 수정된 파일을 필터링합니다.
/D -N: N일 이전에 마지막으로 수정된 파일 (대부분의 로그/임시 파일 정리 시 사용)/D +N: N일 이후에 마지막으로 수정된 파일 (특정 기간 내의 최신 파일 검색 시 사용)/D 0: 오늘 수정된 파일
이 /D 옵션은 forfiles 파일 삭제 자동화의 핵심이 됩니다.
실전 forfiles 파일 삭제 예제
가장 흔하게 사용되는 forfiles 파일 삭제 시나리오를 통해 명령어를 익혀봅시다. 파일 삭제 시에는 복구 불가능한 작업이므로 반드시 신중하게 명령을 실행해야 합니다.
1. 90일 이상 경과된 로그 파일 일괄 삭제
특정 폴더(예: D:\Data\Temp)에서 90일보다 오래된 .log 파일들을 모두 삭제하는 경우입니다. 명령어 실행을 위해 cmd /c를 사용하며, 파일 삭제 명령어는 del입니다. @file 변수는 찾은 파일의 경로와 이름을 del 명령에 정확히 전달합니다.
forfiles /P D:\Data\Temp /S /M *.log /D -90 /C "cmd /c del @file"
주의: /C 옵션 내부에서 외부 명령(del, echo 등)을 실행할 때는 항상 cmd /c를 앞에 붙여주어야 합니다. 이는 forfiles가 시스템 명령을 호출할 수 있도록 쉘을 임시로 실행하는 역할입니다.
2. 특정 확장자 파일만 삭제 (하위 폴더 포함)
C:\Project 폴더와 그 하위 모든 폴더에서 모든 .tmp 임시 파일을 삭제합니다.
forfiles /P C:\Project /S /M *.tmp /C "cmd /c del @file"
실전 forfiles 폴더 삭제 예제
forfiles는 기본적으로 파일을 대상으로 하지만, @isdir 변수와 rmdir 명령어를 조합하여 forfiles 폴더 삭제도 가능합니다. 하지만 폴더 삭제는 파일 삭제보다 더 위험할 수 있으므로, 반드시 충분히 테스트해야 합니다.
1. N일 이상 경과된 빈 폴더 삭제
forfiles는 폴더도 검색할 수 있습니다. @isdir 변수가 TRUE이고, 특정 날짜 조건을 만족하는 폴더에 대해 rmdir 명령어를 실행하여 삭제합니다. 경고: rmdir 명령을 사용할 때 /S 옵션을 넣으면 하위 폴더와 파일까지 강제로 삭제하므로 매우 위험합니다. /S 옵션을 빼고 /Q(조용히) 옵션만 사용하여 빈 폴더만 삭제하는 것이 안전합니다.
forfiles /P C:\Cleanup /D -180 /C "cmd /c if @isdir==TRUE rmdir /Q @file"
위 명령은 180일 이전에 수정된 폴더 중에서 빈 폴더만 조용히 삭제합니다. 만약 폴더 안에 내용물이 있다면 rmdir /Q 명령은 오류를 발생시키고 삭제를 건너뜁니다.
2. 내용물을 포함한 폴더 전체 삭제 (매우 위험)
특정 조건에 맞는 폴더와 그 안의 모든 내용을 강제로 삭제하는 명령어입니다. 이 명령어는 데이터 손실 위험이 매우 크므로, 사용을 지양하거나, 반드시 삭제할 경로를 엄격히 제한해야 합니다.
forfiles /P D:\Archive /M Backup_* /C "cmd /c if @isdir==TRUE rmdir /S /Q @file"
이 명령은 D:\Archive 내에서 이름이 'Backup_'으로 시작하는 폴더와 그 내용물을 강제로 삭제합니다.
forfiles 사용 시 안전을 위한 팁
forfiles 명령어는 강력한 만큼, 잘못 사용하면 대규모 데이터 손실을 초래할 수 있습니다. 항상 안전을 우선해야 합니다.
1. 미리보기(Dry Run)를 생활화하세요
삭제 명령(del, rmdir)을 실행하기 전에, 찾은 파일 목록이 정확한지 확인하기 위해 echo 명령을 사용하여 테스트하세요. 이는 마치 삭제 버튼을 누르기 전에 "내가 이 파일을 삭제할 거야!"라고 소리쳐보는 것과 같습니다.
forfiles /P C:\Test /S /D -30 /C "cmd /c echo @file"
이 명령은 실제로 삭제하지 않고, 삭제될 파일의 목록만 출력합니다.
2. 경로와 옵션을 명확히 하세요
/P 경로와 /M 마스크를 구체적으로 지정하고, /D 날짜 필터를 한 번 더 확인하세요. "모든 파일(.)"을 타겟팅할 때는 항상 극도의 주의를 기울여야 합니다.
3. 배치 파일로 저장하여 관리하세요
복잡한 forfiles 구문은 직접 CMD 창에 입력하기보다는, .bat 파일로 만들어 저장하고 주석을 달아 관리하는 것이 오류를 줄이고 재사용성을 높이는 가장 좋은 방법입니다.
결론: forfiles로 윈도우 파일 관리 자동화하기
forfiles 명령어는 윈도우 서버나 개인 PC의 파일 관리 효율을 극대화하는 보이지 않는 영웅입니다. forfiles 사용법의 핵심인 /D (날짜), /S (재귀), /C (실행 명령) 옵션을 이해하고, @file 변수와 cmd /c 조합을 활용한다면, 누구나 복잡한 파일 삭제나 백업 자동화 스크립트를 쉽게 작성할 수 있습니다.
정기적인 시스템 유지보수를 위해 forfiles를 활용하여 forfiles 파일 삭제 및 forfiles 폴더 삭제 작업을 자동화하는 것은 시스템의 안정성을 높이고 저장 공간을 효율적으로 관리하는 지름길이 될 것입니다.