その人の普段使っている Windows の運用言語でいいと思いますが、汎用性で言えば PHP が一番でしょう。
ChatGPT にまず以下のお願いをしました。
C:\tmp\004 というフォルダ内に 前半が数字部分で後半が漢字部分のファイル名を持った拡張子 .jpg のファイルか複数あります。これらのファイル名部分を数字部分だけに書き換える PHP の CLI プログラムを作成してください
するとこのようになりました
<?php $dir_path = "C:/tmp/004/"; // ディレクトリ内のファイルを取得 $file_list = glob($dir_path . "*.jpg"); foreach ($file_list as $file) { // ファイル名から漢字部分を削除して数字部分のみを取得 $new_filename = preg_replace('/[^0-9]/', '', basename($file, '.jpg')) . '.jpg'; // 新しいファイル名に変更する if (rename($file, $dir_path . $new_filename)) { echo "ファイル名を変更しました:$new_filename\n"; } else { echo "ファイル名を変更できませんでした:$file\n"; } } ?>
ファイル名変更部分のみです。これに続いて画像の縮小を頼んだのですが、こちらの条件設定があいまいだったので、新たに両方を実行するプログラムを書いてくれました。
変換後の画像ファイルを横幅を120ピクセルに縮小するPHPのCLIプログラムを作成してください。ライブラリは GD が使えます。
<?php $dir_path = "C:/tmp/004/"; // ディレクトリ内のファイルを取得 $file_list = glob($dir_path . "*.jpg"); foreach ($file_list as $file) { // ファイル名から漢字部分を削除して数字部分のみを取得 $new_filename = preg_replace('/[^0-9]/', '', basename($file, '.jpg')) . '.jpg'; // 画像を横幅120ピクセルに縮小する $image = imagecreatefromjpeg($file); $width = imagesx($image); $height = imagesy($image); $new_width = 120; $new_height = $height * ($new_width / $width); $new_image = imagecreatetruecolor($new_width, $new_height); imagecopyresampled($new_image, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height); // 新しいファイル名に変更する if (imagejpeg($new_image, $dir_path . $new_filename)) { echo "画像を変換しました:$new_filename\n"; } else { echo "画像を変換できませんでした:$file\n"; } // メモリを解放する imagedestroy($image); imagedestroy($new_image); } ?>
ChatGPT は説明も出力してくれます。
このプログラムは、まず指定されたフォルダ内のすべての .jpg ファイルを取得し、ファイル名から漢字部分を削除して数字部分のみを含む新しいファイル名を設定します。その後、GD ライブラリを使用して、元の画像ファイルを読み込んで横幅を120ピクセルに縮小します。縮小した画像を新しいファイル名に保存し、ファイル名が変更できたかどうかを出力しています。最後に、メモリを解放しています。