目次

内容

概要

  • Windows8ではデジカメから写真を取り込んだ時に日別フォルダを作成することができない
  • そのため、写真からEXIFに登録された撮影日を取得してフォルダを作成して整理するPerlスクリプトを作成した

参考

事前準備

CPANモジュールImage::ExifToolのインストール

スクリプトの内容

  • Windows環境ではShiftJISで動かした
    ###=============================================================================
    ### 概要
    ###=============================================================================
    
    # ピクチャディレクトリ内の写真を日付ディレクトリに整理する
    # Image::ExifToolが必要
    
    ###=============================================================================
    ### 設定
    ###=============================================================================
    
    ### 基本モジュール
    use strict;
    use warnings;
    use Data::Dumper;
    use File::Copy;
    use File::Basename;
    
    ### 拡張モジュール
    use Image::ExifTool;
    
    ### 設定項目
    my $picture_dir = 'C:\Users\ユーザー名\Pictures';
    
    ###=============================================================================
    ### 設定
    ###=============================================================================
    
    ### Image::ExifToolのインスタンス
    my $exif_tool = new Image::ExifTool;
    
    ### ディレクトリ内のJPGファイルに対して処理を実行
    foreach my $picture_file ( glob( $picture_dir . '\*.JPG' ) ){
    	chomp $picture_file;
    	next unless $picture_file;
    	my $exif_info = $exif_tool->ImageInfo( $picture_file ) || next;
    	### 日付を取得
    	my $datetime = $exif_info->{"DateTimeOriginal"} || next;
    	next unless $datetime;
    	my $date = join( "-", split( ":", @{[ split( " ", $datetime ) ]}[0] ) );
    	next unless $date =~ m/^\d{4}-\d{2}-\d{2}$/o;
    	### ディレクトリがなければ作成
    	my $date_dir =  $picture_dir . '\\' . $date;
    	if( ! -d $date_dir ){
    		mkdir $date_dir;
    	}
    	### ファイルを移動
    	my $path_after = $date_dir . '\\' . fileparse( $picture_file );
    	if( ! -e $path_after ){
    		rename $picture_file, $path_after;
    	}
    }

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-25 (日) 19:27:03 (442d)