ファイル名の正規化

概要

  • カレントディレクトリのファイル名をルールに従って正規化する。
  • 正規化したいファイルを選択した後、SendTo から呼び出す。
    perl.exe {fullpath}\normFileName.pl
  • 空白 -> _
  • _v/r. -> _v/r ("v"または"r"に続く"."を削除。ただし拡張子の前の"."だったら削除しない)
  • エラー時にメッセージを表示するようにした。(2012/07/13)

ソース

  • filenormFileName.zip
    すべてを展開すべてを収束
      1
      2
      3
      4
      5
      6
      7
      8
      9
     10
     11
     12
     13
     14
     15
     16
     17
     18
     19
     20
     21
     22
     23
     24
     25
     26
     27
     28
     29
     30
     31
     32
     33
     34
     35
     36
     37
     38
     39
     40
     41
     42
     43
    
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
     
    -
    |
    -
    |
    |
    |
    |
    |
    -
    |
    |
    |
    |
    !
    !
    !
     
     
     
     
     
    
    # 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
    

添付ファイル: filenormFileName.zip 520件 [詳細]

リロード   新規 下位ページ作成 編集 凍結 差分 添付 コピー 名前変更   ホーム 一覧 検索 最終更新 バックアップ リンク元   ヘルプ   最終更新のRSS
Last-modified: Fri, 13 Jul 2012 15:51:32 JST (2019d)