2003/06/04(水) [n年前の日記]
#2 [pc] ViXのフォルダ表紙画像は便利
便利だとは聞いていたけど、今まで使ってなかった。たしかに便利だ。_title.jpgなる画像が一つフォルダ内に増えてしまうのはちょっとアレだけど。しかしコレ、複数フォルダに対して一度に自動生成できないのだろうか。ヘルプを眺めてみたけどそれらしい解説は見つからず。ということでPerlでスクリプトを作った。
#!/usr/bin/perl
# カレントフォルダ以下を再帰的に辿り
# vixのフォルダ表紙画像(_title.jpg)を作成するPerlスクリプト。
#
# ・フォルダ中のjpgファイル名をソートして
# 最初のjpgファイルを _title.jpg というファイル名でコピー。
# ・既に _title.jpg が存在している場合は処理しない。
# ・pngやgifに対しては処理しない。手抜き。
use strict;
use File::Copy;
&check_dir('.');
print "何かキーを押してください";
my $c = getc;
exit 0;
sub check_dir {
my($dirname) = @_;
my @filelist;
my @jpglist;
opendir(DIR,"$dirname") || die "Can't open $dirname";
@filelist = readdir(DIR);
closedir(DIR);
foreach ( sort {lc $a cmp lc $b} @filelist ) {
next if /^\.{1,2}$/;
if ( -d "$dirname/$_" ) {
&check_dir("$dirname/$_");
} else {
if ( lc($_) =~ /\.jpg$/ ) {
push(@jpglist,$_) unless /^_title\.jpg$/;
}
}
}
if ( @jpglist ) {
my @list = sort {lc $a cmp lc $b} @jpglist;
my $srcfn = "$dirname/$list[0]";
my $dstfn = "$dirname/_title.jpg";
if ( -e $dstfn ) {
print "No Job.(found $dstfn)\n";
} else {
print "cp $srcfn $dstfn\n";
copy( "$srcfn", "$dstfn" ) || die "Can't copy $srcfn to $dstfn";
}
} else {
print "Not found $dirname/*.jpg\n";
}
}
[ ツッコむ ]
以上です。