1. 2018.10.16 윈도우의 오래된 파일, 폴더 정리
  2. 2017.11.06 Windows Powershell 권한변경

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



윈도우에서 필요없는 로그나 사용하지 않는 오래된 파일을 정리 할때 사용하는 명령어 입니다.



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


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 파일을 정리하거나 오래된 파일을 지우고 정리하는데 유용하게 사용합니다.


Windows Powershell 권한변경


Windows Powershell 권한변경


Powershell에서 스크립트 실행이 안될 때


. : 이 시스템에서 스크립트를 실행할 수 없으므로 C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\I

nitialize-PowerCLIEnvironment.ps1 파일을 로드할 수 없습니다. 자세한 내용은 http://go.microsoft.com/fwlink/?LinkID=13517

0의 about_Execution_Policies를 참조하십시오.

위치 줄:1 문자:3

+ . "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scri ...

+   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    + CategoryInfo          : 보안 오류: (:) [], PSSecurityException

    + FullyQualifiedErrorId : UnauthorizedAccess

PS C:\Windows\system32>



변경방법


※관리자권한으로 파워쉘 실행.


Microsoft Windows [Version 10.0.10240]

(c) 2015 Microsoft Corporation. All rights reserved.

C:\Windows\system32>powershell

Windows PowerShell

Copyright (C) 2015 Microsoft Corporation. All rights reserved.

PS C:\Windows\system32> ExecutionPolicy      <-- 현재상태확인

Restricted        <---- 모든 스크립트 막음

PS C:\Windows\system32>

PS C:\Windows\system32> Set-ExecutionPolicy Unrestricted

PS C:\Windows\system32>

PS C:\Windows\system32> ExecutionPolicy       <-- 다시 확인

Unrestricted     <---- 모든 스크립트 허용으로 바뀐거 확인 됨.

PS C:\Windows\system32>