画像にされた複数のjpgファイルが写真1.jpg写真-2.jpg、…、 IMG10.jpgのようになっているに、並べ替えを合わせようといちいちファイル名を変えるつもりは上に行くため面倒で作成したスクリプトです。もちろん、WindowsではXnViewで上に行くに処理した。マックで使おうと。

ターミナルで使用するとされ、使い方は以下のとおりである。

php rename.php myfolder 新しい写真

このように使用すると、myfolderにあるすべてのファイル(!)が新しい写真01.jpgの形式でファイル名が変わる。桁数は分かって合わせる。もし、1から100までであれば001に合わせる。

以下はソース。

if($argc != 3){
  echo "invalid!\n";
  echo "Usage: php rename.php {dir} {prefix}\n";
  echo "ex. php rename.php . mypic\n";
  exit(0);
}
$this_file = $argv[0];
$dir = realpath($argv[1]);
$prefix = $argv[2];

if($handle = opendir($dir)){
  $files = array();
  $number_length = 0;
  while(false !== ($entry = readdir($handle))){
    if($entry == '.' || $entry == '..' || $entry == $this_file || is_dir($dir . '/' . $entry)){
      continue;
    }
    $this_len = strlen(preg_replace("/[^0-9]/", '', $entry));
    if($this_len > $number_length){
      $number_length = $this_len;
    }
    $files[] = $entry;
  }

  foreach ($files as $entry) {
    $ext = pathinfo($entry, PATHINFO_EXTENSION);
    $number = sprintf("%0{$number_length}d", preg_replace("/[^0-9]/", '', $entry));
    $new_name = $prefix . $number;
    if( ! empty($ext)){
      $new_name .= '.' . $ext;
    }
    rename($dir . '/' . $entry, $new_name);
  }
  echo "done!\n";
}else{
  echo "can't open dir {$dir}.\n";
}

- コメント機能はありません。コメントの代わりに[email protected]にメールを送ってください。