윈도우10에서 지정된 날짜 경과 시 자동으로 파일 삭제하는 방법

윈도우에서 저장소 센스 구성을 이용 하면 컴퓨터의 저장 공간을 자동으로 확보 할 수 가 있습니다.

하지만 이 기능은 저장소 공간을 제어하는 데 유용할 수 있지만, 사용자가 원하는 경로의 파일을 지정 된 기간 동안 모니터 링 해서 삭제 하는 옵션을 제공 하고 있지는 않습니다.

주기적으로 삭제 해도 되는 파일 이 있다면 특정 위치에 보관 후 PowerShell 및 작업 스케줄러를 사용하여 지정된 일 수보다 오래된 폴더의 파일을 모니터링하고 정리하도록 적용 할 수 있습니다.

그래서 오늘은 윈도우10에서 원하는 날짜가 지나면 자동으로 파일을 삭제하는 방법에 대해서 알아 보겠습니다.

튜토리얼 환경 : 윈도우10 ( 윈도우11 에서도 동일하게 작동 합니다.)

PowerShell 로 지정 일 경과 시 자동으로 파일 삭제하는 방법-기본편

PowerShell 에 명령어 입력으로 지정 일 경과 시 마다 원하는 경로의 파일을 자동으로 삭제하는 방법 입니다.

적용 순서를 안내 하겠습니다.

주의: 잘못된 매개 변수를 입력 하게 되면 중요한 파일이 삭제 될 가능 성이 있으니 임시 폴더 등을 생성 하여 아래 명령을 테스트해보길 권장 합니다.

윈도우에서_퀵링크_메뉴로_파워쉘_관리자_권한_실행
윈도우에서 퀵링크 메뉴로 파워쉘 관리자 권한 실행
  1. 아래의 절차로 윈도우 '파워쉘' 을 실행 해 줍니다.
    1. 윈도우 '퀵링크' 패널 (단축키:  Win +  X) 을 실행 해 줍니다.
    2. Windows PowerShell(관리자)(A) 항목을 클릭 해 줍니다.
    3. 사용자 계정 컨트롤 창이 보이는 경우 관련된 안내를 확인 후 하단 버튼을 눌러 줍니다.
파워쉘에서_삭제_스크립트_입력
파워쉘에서 삭제 스크립트 입력
  1. 파워쉘이 실행 되면 아래 설명을 참고해 명령어를 본인의 환경에 맞도록 수정 등록 합니다. 입력 후  Enter 를 눌러줍니다.
    • "C:\Users\EZM\Desktop\TEST" : 사용할 폴더의 경로를 지정, 본인의 경로로 수정 해야 합니다. 파일 또는 폴더의 경로를 확인 하는 방법은 여기에서 확인 할 수 있습니다. ( Path "$env:userprofile\Desktop\TEST" 이렇게 환경 변수를 사용해 경로를 지정할 수도 있습니다.)
    • .AddDays(-30) : 자동으로 삭제 할 일정, 30일로 되어 있지만 원하는 일자로 수정 가능 합니다.
Get-ChildItem –Path "C:\Users\EZM\Desktop\TEST" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item
  1. 명령어 입력 만으로 원하는 경로의 폴더를 지정된 일정에 따라 사용 하지 않는 파일을 자동으로 삭제 하게 됩니다.
윈도우 7, 8, 11 에서 작업 표시줄 자동 숨기기 설정 변경 하는 방법 모두 정리

작업 스케줄러로 삭제 하는 방법-응용편

위 기본 명령어를 활용하여 작업 스케줄러에서 좀 더 다양한 옵션을 적용 해 볼 수 있습니다. 초보자의 경우 작업 스케줄러를 이용해 특정 프로그램을 자동으로 실행하거나 종료하는 방법을 통해서 기본적인 내용을 확인 할 수 있습니다.

1. 메모장에 파워쉘 스크립트 만들기

메모장에 위에서 안내한 명령어를 이용해 파워쉘 스크립트 파일을 생성 해주어야 합니다.

메모장에서_명령어_입력후_ps_확장자로_저장
메모장에서 명령어 입력후 ps 확장자로 저장
  1. 메모장(.txt) 을 실행 후 위에서 정리 해둔 명령어 (1) 를 입력 해 줍니다.
  2. 생성한 메모장 파일의 이름 과 확장자를 autocleanup.ps1 과 같이 원하는이름.ps1 (2) 형식으로 '다른 이름으로 저장' (단축키 :  Ctrl +  Shift +  S) 해 줍니다. .ps1 은 파워쉘 스크립트 파일의 확장자 형식 입니다.
윈도우10 작업 표시줄 위치 위 아래 옆으로 이동하기

2. 작업 스케줄러 삭제 스케줄 생성

'작업 스케줄러'를 실행 하고 여러가지 옵션을 하나 씩 설정 해 주어야 합니다.

2.1. 작업 스케줄러 실행 후 작업 만들기

우선 윈도우에서 '작업 스케줄러' 를 실행 하고 '작업 만들기'를 생성 해야 합니다.

윈도우_작업_스케줄러_검색_후_실행
윈도우 작업 스케줄러 검색 후 실행
  1. 윈도우의 검색 창에서 "작업 스케줄러" 등으로 입력 해 준 다음 검색 결과를 클릭 해 줍니다.
작업_스케줄러_라이브러리에서_새폴더_생성
작업 스케줄러 라이브러리에서 새폴더 생성
  1. '작업 스케줄러' 가 실행 되면 왼쪽 파일 트리 박스에서 '작업 스케줄러 라이브러리' 폴더를 마우스 오른쪽 버튼으로 클릭 해 메뉴를 확장 해줍니다.
  2. 메뉴에 서 새 폴더(N) 옵션을 선택 해 줍니다. 그냥 진행 해도 되지만 시스템 작업에서 작업을 구성하고 분리할 수 있도록 새 폴더를 만들고 진행 합니다.
작업_스케줄러_라이브러리_폴더_이름_지정
작업 스케줄러 라이브러리 폴더 이름 지정
  1. '새 폴더의 이름 입력' 창이 생성되면 원하는 이름을 입력 후 확인 버튼을 눌러 줍니다.
작업스케줄러에_작업_만들기_옵션_선택
작업스케줄러에 작업 만들기 옵션 선택
  1. 생성한 폴더를 다시 한번 마우스 오른쪽 버튼으로 클릭 해 메뉴를 확장 후 작업 만들(R) 옵션을 선택 해 줍니다.

2.2. 작업 만들기 일반 설정

'새작업 만들기' 창이 열리게 되면 상단 탭의 순서대로 세부 설정을 해주면 됩니다.

우선 일반 설정에서 체크할 내용 입니다.

작업_스케줄러_새작업_만들기에서_일반_탭_설정
작업 스케줄러 새작업 만들기에서 일반 탭 설정
  1. 탭 위치가 일반 으로 되어 있는지 체크 후 상단 이름(M) (1) 에 원하는 값을 지정 해 줍니다. 식별이 편한 이름으로 정해줍니다.
  2. 아래 '보안 옵션' 에서 사용자의 로그온 여부에 관계없이 실행(W) (2) 에 체크를 해 줍니다.

2.3. 작업 만들기 트리거 설정

'새작업 만들기'의 트리거 탭으로 이동 해서 동작이 진행 할 조건을 설정 해 주어야 합니다.

작업_스케줄러_트리거_새로_만들기
작업 스케줄러 트리거 새로 만들기
  1. 트리거 탭에서 하단 새로 만들기(N) 버튼을 클릭 해 줍니다.
작업_스케줄러_트리거_예약_상태_일정_등록
작업 스케줄러 트리거 예약 상태 일정 등록
  1. '새 트리거 만들기' 창이 생성 되면 왼쪽 '설정' (1) 섹션에서 원하는 옵션을 선택 해 줍니다. 어떤 옵션을 선택 해도 진행 방식은 동일 합니다.
  2. 기간을 지정 후 오른쪽 세부 설정 (2) 에서 월(H)일(A) 의 값을 정해줍니다.

2.4. 작업 만들기 동작 설정

'새작업 만들기'의 동작 탭으로 이동 해서 위 트리거 조건에 따라 수행 할 동작을 지정 해 주어야 합니다.

작업_스케줄러_동작_새로_만들기
작업 스케줄러 동작 새로 만들기
  1. 동작 탭에서 하단 새로 만들기(N) 버튼을 클릭 해 줍니다.
작업_스케줄러_새_동작_만들기_옵션_설정
작업 스케줄러 새 동작 만들기 옵션 설정
  1. '새 동작 만들기' 패널에서 아래 정보를 입력 해 줍니다.
    • 프로그램/스크립트(P) : powershell.exe
    • 인수 추가(옵션)(A): -ExecutionPolicy Bypass C:\Users\EZM\Desktop\cleanup.ps1 형식으로 입력 해 줍니다. 경로는 파워쉘 스크립트 파일 (.ps1)의 경로를 입력 해 주어야 합니다.

2.5. 작업 만들기 설정 옵션 체크

'새작업 만들기'의 설정 탭으로 이동 해서 설정 옵션을 체크 해주어야 합니다. '조건' 탭에서는 따로 설정 할 것은 없습니다.

작업_스케줄러_설정_옵션_체크
작업 스케줄러 설정 옵션 체크
  1. 아래 옵션을 추가로 체크 해 위 이미지 와 동일한 항목에 체크가 될수 있도록 해 줍니다.
    • 요청 시 작업이 실행되도록 허용(L)
    • 예약된 시작 시간을 놓친 경우 가능한 대로 빨리 작업 시작(S)
    • 작업이 실패하는 경우 다시 시작 간격(T)
  2. 설정을 모두 체크 후 하단확인 버튼을 눌러 줍니다.
작업스케줄러_저장시_사용자_계정_정보_입력이_필요_할_수_있음
작업스케줄러 저장시 사용자 계정 정보 입력이 필요 할 수 있음
  1. '새작업 만들기' 를 저장 하게 되면 사용자의 권한에 따라 '사용자 계정 정보'를 입력해야 할 수 있으니 생성 되면 입력 해 줍니다.

모든 설정이 마무리 되었고 위와 같이 설정 하게 되면 지정한 경로에 있는 오래된 파일들을 지정한 일정에 따라 자동으로 삭제 하게 됩니다.

참고: 이름을 변경하거나 폴더를 다른 위치로 이동 하게 되면 작업이 되지 않으니 경로 변경 시 스크립트, 작업 스케줄러의 경로를 모두 수정 해야 합니다.

마무리

이렇게 윈도우10에서 원하는 날짜가 지나면 자동으로 파일을 삭제하는 방법에 대해 알아 보았습니다.

기본 원리(명령, 스크립트) 만 알고 있다면 '작업 스케줄러' 등 여러 옵션들을 사용 하여 활용 될 수 있을 것 입니다. 자신이 편한 방식으로 선택 하여 사용 해 보시길 바랍니다.

실제 작동 하는지 테스트는 기간을 아주 짧게 정해두면 손쉽게 확인 할 수 있습니다.

윈도우10 호환성 탭 사라짐 보이게 복구 설정하는 방법들

참고

댓글로 남기기 어려운 내용은 Contact Form 에서 개별적으로 문의 할 수 있습니다. 해당 글과 연관 된 내용은 Copy를 이용해 현재 페이지의 주소를 복사 후 문의 폼에 입력시 보다 정확한 답을 얻을 수 있습니다.

5 thoughts on “윈도우10에서 지정된 날짜 경과 시 자동으로 파일 삭제하는 방법”

    • 피드백 감사합니다. 말씀 주신 -Recurse 옵션을 추가해야 한다는 것이 작업 스케줄러를 말씀하시는 거라면, cleanup.ps1 스크립트에 옵션이 포함되어 있어 다시 추가할 필요가 없습니다. 이 부분이 아니라면 어디를 말씀하시는지 알려주시면 확인 후 본문내용을 보충하겠습니다.

      응답
  1. Get-ChildItem –Path “C:\Users\park\Desktop\test” -Recurse Where-Object {($_.LastWriteTime -lt (Get-Date)AddDays(-30))} Remove-Item

    명령문은 위와 같습니다~!

    응답
    • 오류 내용을 보면 Get-Date 명령어와 AddDays 메소드 사이에 공백이 빠져 있다고 안내하고 있습니다. 즉, Get-Date)AddDays 대신 Get-Date).AddDays로 작성해야 합니다. Get-ChildItem –Path "C:\Users\park\Desktop\test" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddDays(-30))} | Remove-Item와 같이 사용해 보세요.

      응답
  2. 위의 명령어를 그대로 복사하여, 파워셀에서 실행하였으나,
    아래와 같은 에러창이 뜹니다. 도움 부탁드립니다.

    위치 줄:1 문자:105
    + … Recurse Where-Object {($_.LastWriteTime -lt (Get-Date)AddDays(-30))} …
    + ~~~~~~~
    식 또는 문에서 예기치 않은 ‘AddDays’ 토큰입니다.
    위치 줄:1 문자:105
    + … test” -Recurse Where-Object {($_.LastWriteTime -lt (Get-Date)AddDays( …
    + ~
    식에 닫는 ‘)’가 없습니다.
    위치 줄:1 문자:72
    + … em –Path “C:\Users\park\Desktop\test” -Recurse Where-Object {($_.Last …
    + ~
    문 블록 또는 형식 정의에 닫는 ‘}’가 없습니다.
    위치 줄:1 문자:117
    + … e Where-Object {($_.LastWriteTime -lt (Get-Date)AddDays(-30))} Remove …
    + ~
    식 또는 문에서 예기치 않은 ‘)’ 토큰입니다.
    위치 줄:1 문자:118
    + … Where-Object {($_.LastWriteTime -lt (Get-Date)AddDays(-30))} Remove- …
    + ~
    식 또는 문에서 예기치 않은 ‘}’ 토큰입니다.
    + CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
    + FullyQualifiedErrorId : UnexpectedToken

    응답

Leave a Comment