#!/usr/local/bin/perl # # Last updated: <2005/01/28 17:39:56 +0900> # # 複数ファイルに対して処理を行う Script-fu スクリプトを出力する。 # # by mieki256 # # 2005/01/28 ver 0.01 とりあえず作成 use strict; use POSIX 'strftime'; use Cwd; use File::Basename; # 設定ここから -------------------- my $inext = "png"; # 変換前の画像ファイルの拡張子 my $outext = "xcf"; # 変換後の画像ファイルの拡張子 my $scname = "png2xcf"; # 各ファイルに用いる Script-fu スクリプト名 my $outscname = "my-run-all"; # 出力するスクリプトにつける名前 my $gimpquit_on = 0; # 出力に (gimp-quit 0) を、0:含まない / 1:含む my $username = "yourname"; # 利用者の名前 # 設定ここまで -------------------- my $now = strftime "%Y/%m/%d %H:%M:%S", localtime; my $dir = Cwd::getcwd(); # オプション判定 foreach (@ARGV) { if ( /ie=(.+)/ ) { $inext = $1; } elsif ( /oe=(.+)/ ) { $outext = $1; } elsif ( /osc=(.+)/ ) { $outscname = $1; } elsif ( /sc=(.+)/ ) { $scname = $1; } elsif ( /gq/ ) { $gimpquit_on = 1; } elsif ( /user=(.+)/ ) { $username = $1; } else { if (-d $_ ) { $dir = $_; } else { usage(); } } } # ファイル一覧取得 my @files = (); opendir(DH, $dir) || die "Cannot open $dir"; while (my $file = readdir DH) { next if $file =~ /^\.{1,2}$/; next unless $file =~ /\.$inext$/i; push(@files, $dir . "/" . $file); } closedir(DH); # スクリプト本文をを出力 print "(define ($outscname)\n"; if ( $#files < 0 ) { print " (gimp-message \"not found $inext file.\")\n"; } else { foreach (sort {$a cmp $b} @files) { s|\\|/|g; my $oldf = $_; s/\.$inext$/\.$outext/i; print " ($scname \"$oldf\" \"$_\")\n"; } } print " (gimp-quit 0)\n" if $gimpquit_on; print ")\n"; print << "EOM"; (script-fu-register "$outscname" _"/Xtns/Script-Fu/Utils/$outscname..." "Converts all $inext to $outext" "$username" "$username" "$now" "" ) EOM exit; sub usage { my $name = basename($0); print << "EOM"; 複数ファイルに対して処理を行う Script-fu スクリプトを出力する。 usage : perl $name [directory] [ie=xxx] [oe=xxx] [sc=xxx] [osc=xxx] [gq] [user=xxx] [-h] [--help] directory ディレクトリを指定 ie=xxx 変換前の拡張子 (default ie=$inext) oe=xxx 変換後の拡張子 (default oe=$outext) sc=xxx 各ファイルに用いるスクリプト名 (default $scname) osc=xxx 出力スクリプトにつける名前 (default $outscname) gq (gimp-quit 0) を含ませる user=xxx 利用者名 -h , --help このヘルプを\表\示 EOM exit; }