概要
- ファイル名の正規化
- カレントディレクトリのファイル名をルールに従って正規化する。
- 正規化したいファイルを選択した後、SendTo から呼び出す。
perl.exe {fullpath}\normFileName.pl
- 空白 -> _
- _v/r. -> _v/r ("v"または"r"に続く"."を削除。ただし拡張子の前の"."だったら削除しない)
- エラー時にメッセージを表示するようにした。(2012/07/13)
ソース
-
normFileName.zip
# normFileName.pl # ファイル名を正規化する。 # 空白 -> _ # _v/r. -> _v/r ("v"または"r"に続く"."を削除。ただし拡張子の前の"."だったら削除しない) use strict; use warnings; use utf8; use Encode; use File::Basename; use Term::ReadKey; my $charset = 'CP932'; binmode( STDIN, ":encoding($charset)" ); binmode( STDOUT, ":encoding($charset)" ); binmode( STDERR, ":encoding($charset)" ); @ARGV = map{ decode( $charset, $_ ); } @ARGV; my @Ext = map{ ".$_" } qw( pdf zip mbs htm html txt doc docx xls xlsx mdb accdb ppt pptx ); foreach my $fileNameIn ( @ARGV ){ my( $name, $path, $suffix ) = fileparse( $fileNameIn, @Ext ); if ( $suffix ){ my $fn2 = $name; $fn2 =~ s/\s+/_/g; $fn2 =~ s/_+/_/g; $fn2 =~ s/(_[vr])\./$1/ig; $fn2 =~ s/(_[vr])[-\.](\d+)[-\.](\d+)/$1$2.$3/ig; if ( $name ne $fn2 ){ print( "old: ${name}${suffix}\nnew: ${fn2}${suffix}\n" ); rename( encode( $charset, $fileNameIn ), encode( $charset, $path . $fn2 . $suffix ) ) or print( "${name}${suffix}: $!\n" ); print( "\n" ); } } } warn( "Hit Enter.\n" ); ReadKey(0); # EOF