Powershell을 사용하여 파일 관리를 하면 여러모로 편리한 것들이 많이 있습니다.

오늘은 지지난주 이전의 특정 파일들을 지우는 스크립트를 작성해 볼까 합니다.

저는 특정 메모들을 다음과 같이 D:\MEMO_JKD.txt 라는 형태로 저장하곤 합니다.

그리고 하루에 한번씩 이 MEMO.txt 파일을 날짜를 붙여서 20170210_MEMO.txt 와 같이 백업해 놓습니다.

시간이 지나면 지날 수록 해당 메모 파일들은 양이 계속 늘어 나겠죠.

그래서 이주 정도가 지난 메모 파일은 지우곤 합니다.

이러한 경우 다음과 같이 Powershell 스크립트를 작성해서 사용 할 수 있습니다.

$dayofweek = [int](Get-Date).DayOfWeek
$weekAgoDate=(Get-Date).AddDays(-($dayofweek+7))
gci D:\* -Include *MEMO.txt | ? {$_.Name -match '\d_MEMO.txt' -and $_.LastWriteTime -lt $weekAgoDate} | Remove-Item -Force


위 스크립트는 현재 사용하고 있는 MEMO.txt 파일은 지우면 안되므로 이름 앞에 숫자가 들어간 메모파일들 중에 이주 이상된 파일들을 지우는 스크립트 입니다.

요즘은 많은 분들이 TV 프로그램을 다운로드 받아서 보실텐데 이런 방송 프로그램들도 위와 같은 스크립트를 통해 특정 시간이 지난것들은 제거 해 주는 용도로도 사용 할 수 있을 겁니다. 


Autohotkey 포럼의 글들을 보다가 정말 좋아 보이는 프로그램을 하나 발견 했습니다.

 

아래 포스팅에서 밝혔다시피 Autohotkey editor 로 저는 보통 Scite4autohotkey 를 주로 사용했는데~


2014/02/18 - [programming language/Autohotkey] - Notepad++ 에서 Autohotkey 코딩 하기


2012/02/22 - [programming language/Autohotkey] - Autohotkey를 사용해 보아요~

 

포럼의 아래 주소에~ AHK Studio 라는 툴이 있더군요. Autohotkey 로 만들어진 Autohotkey editor 입니다.

 

http://www.autohotkey.com/board/topic/85996-ahk-studio/

 

Scite4autohotkey 에서는 indent 를 다시 해주는 기능 등은 없어서 좀 불편했는데~ AHK Studio 에서는 이런 기능들이 있더군요.




 

AHK Studio 는 위 포럼에서도 다운로드 받을 수 있고~ AHK Studio 개발자의 사이트에서도 다운로드 받을 수 있습니다. 다운로드 주소는 아래와 같습니다.


 

http://maestrith.com/

 

아래 그림에서와 같이 Autohotkey 소스 코드를 받고 싶으면 AHK 를 실행 파일만 받고 싶다면 EXE 링크를 클릭하면 됩니다.




 

현재 제 설정 파일을 열어보니 알아서 include 된 파일들도 열어 주더군요.

 

 

또한 위 그림처럼 2 pannel 도 되구요~ 제일 오른쪽에 함수 네비게이터도 있더군요. 




위 그림에서는 오른쪽의 함수 네비게이터의 폭이 좀 좁게 보이지만~ window → widths 메뉴에 들어가서 조절 할 수 있더군요. 




 

또한 아래 유투브를 보니… 현재 파일의 여러 함수들을 나눠서 각각의 Autohotkey 파일들로 분류 해주는 기능도 있는 것 같네요…


 

 

잠깐만 봐도 꽤 매력적이네요~ 사용 문서 좀 보면서 공부 좀 해야겠네여~


  1. 송사리 2015.01.25 15:21

    오핫에 대해 알고 싶은 분야를 쉽게 설명을 잘해주셔서 고맙습니다.
    정말 정말 대단한 사람같아요.

    • 남성 2015.01.25 16:31 신고

      도움되었다니 다행이네요. 방문해 주셔서 감사합니다. ^^

컴퓨터를 사용하다 보면 특정 용량 이상 또는 특정 용량 이하의 파일들을 걸러 내고 싶은 경우가 있다.

이런 경우엔 단순히 윈도우 탐색기에서 크기에 따라 정렬을 한 이후에 드래그 하여 지우는 방법 등을 쓸 수가 있다.

하지만 같은 폴더내에 특정 확장자의 파일만 지우고 싶은 경우에는 윈도우 탐색기만으로는 부족하다.

이런 경우 powershell 을 이용하면 너무나 간단히 작업을 완료 할 수가 있다.

나의 경우엔 D:\movie_folder 안에 있는 avi 파일 중에서 용량이 100 MB 이하인 파일들을 지우고 싶었다.

위 작업을 수행하는 powershell 코드는 아래와 같다.

 

gci d:\movie_folder\* -Include *.avi | Where-Object -FilterScript { $_.length -lt 100MB } | Remove-Item –Force

 

위 코드에 대해 설명을 해 보자.

  • gci 는 Get-ChildItem 의 alias(별명) 으로서 우리가 흔히 알고있는 dir 과 같은 의미이다. 즉 저장소 내의 하위 항목들을 가져 온다.
  • d:\movie_folder\* 는 찾고자 하는 폴더
  • -Include *.avi 은 avi 파일만 찾겠다는 의미
  • 이에 대해 파이프라인( | ) 으로 연결해서 Where-Object 로 찾고자 하는 조건을 만들어준다.
  • $_.length 은 각 항목들의 크기를 말한다.
  • -lt 는 비교 연산자이다. < 를 의미 하는 것으로 작다 를 나타내는 비교 연산자이다. 100 MB 보다 작은 파일들만 걸러낸다.
  • Remove-Item –Force 는 강제로 삭제하라는 의미다.

 

위 코드에서 비교연산자 부분에 대해 추가적인 설명을 하자면

powrshell 에서는 우리가 흔히 알고 있는 비교 연산자인 > , < , >= 등을 쓰지 않는다.

대신 다음과 같이 문자로 표시 한다.

 

표 1, powershell 비교 연산자

-lt

Less than

작다

-le

Less than or equal to

작거나 같다

-gt

Greater than

크다

-ge

Greater than or equal to

크거나 같다

-eq

Equal to

같다

-ne

Not equal to

같지 않다

-like

Like (uses wildcards for matching)

유사하다

-notlike

Not like (uses wildcards for matching)

유사하지 않다

표 출처: powershell 비교연산자

 


+ Recent posts