brainage.egloos.com

포토로그



윈도우 PowerShell 주물럭 - 파일 이름 바꾸기 by 천하귀남

윈도우에 파워셀이라는 프로그래밍 가능한 명령기능이 추가됬습니다. 업데이트 하다보면 어느날 추가되있는데 윈도우8에도 있더군요. 도스명령의 패치 프로그램 비슷하지만 윈도우의 닷넷프로그래밍 요소도 불러다 사용가능하기 때문에 거의 프로그래밍 퉁이라 보면됩니다.

그걸 잠시 뚱땅거리다 아래와같은걸 만들었습니다. 특정 폴더의 JPG파일에서 exif값을 읽어다 사진의 촬영일자로 파일명을 생성해 주는 프로그램입니다. 파일명만 만들지 파일이름을 바꿔주지는 않습니다. 파워셀의 도움말이 부실해 감으로 만들다 보니 그부분은 아직 못만들었군요. 일단 나온 결과물을 복사해 CMD창에 붙이면 실행되도록은 만들었습니다.

파워쉘 책을 딱 한종류 본적이있는데 도서관에 있나 확인해 봐야겠군요. 

완성품이 아니라 죄송합니다. ^^;

#특정 폴더의 JPG이미지 파일에서 exif정보를 읽어 촬영일자를 표시하는 윈도우 파워셀 프로그램
#응용하면 촬영일자로 이름 자동 바꾸기로 활용가능

#폴더명 입력

$dirInfo = "G:\"

Get-ChildItem $dirInfo -Filter *.jpg |
% {


foreach ($fileInfo in $_)
{
[System.IO.FileStream]$fReader = $fileInfo.OpenRead();

if (-not ($fileInfo -eq $null))
{
$dateTaken = "";
try
{
$image = [System.Drawing.Imaging.Metafile]::FromStream($fReader,"true","false");
$exifDT = $image.GetPropertyItem('36867'); # Date taken
$exifDtString = [System.Text.Encoding]::ASCII.GetString($exifDT.Value);
$dateTaken = [datetime]::ParseExact($exifDtString,"yyyy:MM:dd HH:mm:ss`0",$Null);

}
catch {}

if ($dateTaken -eq ""){
$dateTaken = $fileInfo.LastWriteTime;
}

$prefix = [string]::Format("IMG_{0:yyyyMMdd}_{0:HHmmss}", $dateTaken)
write "copy $fileInfo $prefix.jpg";

$fReader.Close();

}
}
}


덧글

  • YoUZen 2012/11/13 19:29 #

    오... 이거 괜찮네요. 이젠 매크로가 필요없겠군요ㅋㅋㅋㅋ
  • 천하귀남 2012/11/14 10:58 #

    헌데 이거 정말 문법이나 이런것이 닷넷과 다릅니다. 헌데 어디서 도움받기도 쉽지않을만큼 일반적인것이 아닙니다.
    그래서 골치이긴 합니다. 그래도 기능하나는 막강하군요 ^^
  • 희야♡ 2012/11/13 21:41 #

    윈도 서버 운영하는게 일이라 파워쉘좀 만져보면 편할서 같은데 자료가 너무 없네요 ㅎㅎ

    챡하나만 걸려라 찾는데 한글책없고 원서도 들어온건 안보이고....ㅡㅡ
  • 천하귀남 2012/11/14 10:58 #

    한글책으로 딱 한권 나와있습니다. 오래전 국회도서관에서 봤는데 동네도서관이 있을지 모르겠군요.
※ 로그인 사용자만 덧글을 남길 수 있습니다.

구글 애널리틱스

통계 위젯 (화이트)

184199
1383
6301682

2019 대표이글루_IT

이 이글루를 링크한 사람 (화이트)

410

당부드리는 말

블로그 사진을 포함한 전체가 아닌 일부의 내용은 얼마든지 사용하셔도 상관없습니다.

상대방을 존중하는 생각이 있다면 욕설과 과도한 비아냥은 자제를 부탁드립니다. 정도가 심하거나 비로그인의 글은 임의 삭제 가능함을 알려드립니다.

A타입 클린 캠페인 위젯

방문자

Map