본문 바로가기
운영체제/Windows

Windows ] 오래된 파일을 삭제하는 배치 스크립트

by eteo 2024. 1. 2.

 

 

 

오래된 파일을 삭제하는 배치 스크립트

 

아래는 "logs" 디렉토리에서 최근 30일 동안 수정되지 않은 파일을 모두 삭제하는 목적의 스크립트이다.

 

@echo off
cd /d "%~dp0"
setlocal enabledelayedexpansion

set "target_folder=logs"
set "cutoff_date=30"

forfiles /p "%target_folder%" /s /d -%cutoff_date% /c "cmd /c if @isdir==FALSE del @file"

 

 

  • @echo off : 콘솔에 현재 실행중인 명령을 표시하지 않도록 설정한다.
  • cd /d "%~dp0" : 현재 스크립트가 위치한 디렉토리로 작업 디렉토리를 변경한다. %~dp0가 현재 스크립트 파일의 경로를 나타낸다.
  • setlocal enabledelayedexpansion : 환경변수 딜레이 확장을 활성화한다. setlocal부터 endlocal 또는 파일의 끝 까지의 영역에서 set으로 설정한 환경수가 라인별로 변경한 내용이 반영될 수 있도록 한다.
  • set "target_folder=logs" : target_folder 변수에 "logs"라는 값을 할당한다.
  • set "cutoff_date=30" : cutoff_date 변수에 "30"이라는 값을 할당한다.
  • forfiles /p "%target_folder%" /s /d -%cutoff_date% /c "cmd /c if @isdir==FALSE del @file" : forfiles 명령어는 파일이나 디렉토리를 검색하고 조건에 맞는 파일/디렉토리에 대해 특정 작업을 수행하는 데 사용하는 명령어로 특정 디렉토리에서 지정된 일수보다 오래된 파일을 삭제한다.
    • /p "%target_folder%" : 대상 디렉토리로 이동한다.
    • /s : 하위 디렉토리도 검색한다.
    • /d -%cutoff_date% : 지정된 일수 이전에 수정된 파일을 선택한다.
    • /c "cmd /c if @isdir==FALSE del @file" : 선택된 파일에 대해 실행할 명령을 정의한다. 여기서는 해당 파일이 디렉토리가 아니면 @isdir==FALSE 파일을 삭제하는 명령을 실행한다 del @file.