- ベストアンサー
映像が異なり、ファイル名が同一の場合のまとめ方
膨大な数の写真ファイルを一つのフォルダにまとめる際、 映像が異なってもファイル名が同じであれば、上書きされますよね。 これを上書きせず、ファイル名はA(1)のように変換されて同一フォルダにまとまる方法は無いでしょうか? 映像が同一、ファイル名も同一であれば上書きされても構いません。 当方、Expression Mediaを使用しております。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
リネームソフトのShupapanをお試し下さい。
その他の回答 (1)
- sevenless
- ベストアンサー率66% (374/561)
多分最初から重ならないようにファイルをリネームする方が簡単ですが、一応書かれている内容を実現する方法を考えてみました。 以下の perl スクリプトを使えば、指定したファイルを指定したフォルダにコピーできます。その際にファイル名を比較して、ファイル名が重なれば新しい方を「ファイル名-1」という名前に変えてコピーします。以下、重なるファイルがあれば -2, -3... とファイル名を変えていきます。同時にファイルの内容を比較して、「ファイル名」「ファイル名-1」「ファイル名-2」...の中に同じ内容のファイルがあれば、そのファイルはコピーされません。 -------------ここから------------- use File::Copy; use File::Compare; my $destination = "ファイルを集めるフォルダ(ディレクトリ)のフルパス"; my $source_file = $ARGV[0]; my $temp_file = ""; my $base = ""; my $suffix = ""; my $temp_base = ""; my $i = 1; @filelist = glob($destination."*.*"); $temp_file = (split(/\//, $source_file))[-1]; $base = (split(/\./, $temp_file))[0]; $suffix = (split(/\./, $temp_file))[-1]; while (grep /\/$temp_file$/ , @filelist) { if (compare ($source_file, $destination.$temp_file) == 0) { exit; } $temp_base = $base."-".$i; $temp_file = $temp_base.".".$suffix; $i = $i + 1; } copy ($source_file, $destination.$temp_file); -------------ここまで------------- 使い方としては、コピーしたいファイルのフルパスを引数にして上記のスクリプトを実行します。コピー先のフォルダ名はあらかじめスクリプト中の「ファイルを集めるフォルダ(ディレクトリ)のフルパス」で指定しておきます。 実際的には、ファイルを1個ずつ指定してターミナルでスクリプトを実行するなど面倒でやってられませんが、DropPerler を使えば、Drag & Drop で多数のファイルにまとめてスクリプトを適用する事ができます。これなら最小の手間で処理が完了します。 http://drumsoft.com/drum/soft.htm ちなみに(ファイル名).(拡張子)という通常の形式を想定しているので、ファイル名の中に半角ピリオドを含んだり、拡張子がなかったりすると正しく動作しないかもしれません。その場合は適当に修正してください。
お礼
ありがとうございます。 でも、ちょっと難しい感じですね。 他の方の意見も聞きながら、検討したいと思います。
お礼
ありがとうございます。 リネームした場合、映像が一致するかしないか問わず、 一つのフォルダに纏まりますよね。 映像が一致する場合は、上書きしてもらいたいのです。