오래된 파일을 삭제하는 배치 스크립트
아래는 "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.
'운영체제 > Windows' 카테고리의 다른 글
윈도우 11 ] 한글 입력 도중 마지막 문자 지워지는 문제 해결 방법 (0) | 2024.05.16 |
---|---|
Windows 명령 프롬프트에서 리다이렉션과 파이프 사용 (0) | 2024.04.04 |
nssm 사용해서 배치파일을 Windows 서비스로 등록하기 (0) | 2023.12.27 |
Windows 작업 스케줄러 사용하여 배치파일 자동 실행하기 (0) | 2023.12.26 |
Windows 10 ] 네트워크 브리지 설정 (0) | 2023.11.22 |