# 將JPEG, RAW, TIFF三個目錄同步
# 2013/12/28加上checkDirectoryExist,修正問題

use strict;
use File::Copy;
use File::Basename;
use Time::HiRes qw(gettimeofday);
use 5.010;

my $t0 = gettimeofday;
my $DestRAW    = "NEF/";
my $DestJPEG   = "JPEG/";
my $DestTIFF   = "TIFF/";
my $DelFolder  = "_del/";

#檢查目錄是否存在
&checkDirectoryExist($DestRAW, $DestJPEG, $DestTIFF);

chdir $DestJPEG;
my @fileJPG = glob "*.JPG";
chdir "..";
chdir $DestRAW;
my @fileRAW = glob "*.NEF";
chdir "..";
chdir $DestTIFF;
my @fileTIF = glob "*.TIF";
chdir "..";

###############################################################################

mkdir $DelFolder;

#處理JPEG與RAW配對
&moveFile($DestJPEG, $DestRAW, $DelFolder, @fileJPG);
&moveFile($DestRAW, $DestJPEG, $DelFolder, @fileRAW);

#處理JPEG與TIFF配對
&moveFile($DestJPEG, $DestTIFF, $DelFolder, @fileJPG);
&moveFile($DestTIFF, $DestJPEG, $DelFolder, @fileTIF);

#處理JPEG與RAW配對
&moveFile($DestJPEG, $DestRAW, $DelFolder, @fileJPG);
&moveFile($DestRAW, $DestJPEG, $DelFolder, @fileRAW);

my $t1 = gettimeofday;
printf("Time: %3.3f sec\r\n", $t1 - $t0);

system("pause");

sub moveFile() {
    for (3..$#_) {
        my $src = $_[1].uc( $_[$_] );

        if ( $_[0] eq $DestJPEG && $_[1] eq $DestRAW) {
            $src =~ s/\.JPG/\.NEF/gi;
        } elsif ( $_[0] eq $DestRAW && $_[1] eq $DestJPEG) {
            $src =~ s/\.NEF/\.JPG/gi;
        } elsif ( $_[0] eq $DestJPEG && $_[1] eq $DestTIFF) {
            $src =~ s/\.JPG/\.TIF/gi;
        } elsif ( $_[0] eq $DestTIFF && $_[1] eq $DestJPEG) {
            $src =~ s/\.TIF/\.JPG/gi;
        }

        #say $src;

        if ( !-e $src ) {
            my $dest = $_[2].$_[$_];
            say "Moving file: ".$_[0].$_[$_].' to '.$dest;
            move($_[0].$_[$_], $dest) if (-e $_[0].$_[$_]);
        }
    }
}

sub checkDirectoryExist {
    for(@_) {
        if(!-e $_) {
            say "Not found \"$_\"";
            die;
        }
    }
}

arrow
arrow
    全站熱搜

    bagatelles 發表在 痞客邦 留言(0) 人氣()