윈도우의 오래된 파일, 폴더 정리

윈도우에서 필요없는 로그나 사용하지 않는 오래된 파일을 정리 할때,

몇일 이상 지난 파일을 지우기 위해 필요한 명령어


forfiles /p "D:\log" /s /d -30 /c "cmd /c @rmdir /s /q @path"


/d 옵션 뒤에 -30 은 30일 이상 지난 폴더와 내용을 삭제하라는 뜻입니다.



기본식


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 /P C:\WINDOWS /S /M DNS*.*

  - C:\WINDOWS 하위 디렉토리 중 DNS를 포함하는 모든 파일 삭제


  FORFILES /S /M *.txt /C "cmd /c type @file | more"

  - 현재위치의 모든 텍스트 파일의 내용을 보여줍니다.


  FORFILES /P C:\ /S /M *.bat

  - C:\ 하위 디렉토리 포함 모든 bat 파일을 삭제합니다.


  FORFILES /D -30 /M *.exe /C "cmd /c echo @path 0x09 was changed 30 days ago"

  - 현재 디렉토리에 있는 모든 실행 파일들중 30일 이전의 파일들을 "경로\1.exe was changed 30 days ago" 형식으로 표시


  FORFILES /D 2001-01-01 /C "cmd /c echo @fname is new since Jan 1st 2001" 

  - 2001-01-01에 만들어진 파일을 확장자명 없이 출력


  FORFILES /D +2015-3-21 /C "cmd /c echo @fname is new today"

  - 2015-03-21 이후에 만들어진 파일을 @fname 뒤의 문장을 포함하여 출력


  FORFILES /M *.exe /D +1


  FORFILES /S /M *.doc /C "cmd /c echo @fsize"


  FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"




자동으로 오래된 파일을 로그로 기록하고, 삭제하는 배치파일 만들기


CMD 창을 띄우고 빈 파일을 만들고, 메모장으로 열어 다음 내용을 추가 해준다.


D:\> type NUL > D:\script\Delete_old.bat


D:\> notepad D:\script\Delete_old.bat


type NUL > D:\log\Delete_%DATE%.log

forfiles /p "D:\downloads" /s /m * /d -7 /c "CMD /c echo @path" >> Delete_%DATE%.log

forfiles /p "D:\downloads" /s /m * /d -7 /c "CMD /c @rmdir /s /q @path" >> Delete_%DATE%.log


다운로드 폴더에 있는 7일 이상된 파일을 로그로 남기고 삭제 한다.


해당 배치 파일은 작업 스케쥴러에 등록하여, 파일을 실행 하지 않아도 자동으로 매일 혹은 매주, 매달 같이 

주기를 지정하여 자동으로 삭제 할 수 있다.


오래 쌓여서 보지 않는 LOG 파일을 정리하거나 오래된 파일을 지우고 정리하는데 유용하게 사용한다.


'Etc. > Windows' 카테고리의 다른 글

윈도우의 오래된 파일, 폴더 정리  (0) 2018.10.16
Powershell 권한변경  (0) 2017.11.06
알송 광고 제거 및 차단  (0) 2014.07.02
초고속 통신사 DNS 서버 주소 모음  (0) 2012.05.29

티스토리 툴바