デジカメで撮影したブログ用の画像を編集して、WordPressにアップロードして記事を書いているときにふと気付きました。
拡張子が全部大文字で「.JPG」になってる…。
Windowsでは、拡張子の大文字小文字の区別なく同じファイルとして認識します。
しかし、サーバーのLinuxでは大文字小文字を区別し、別ファイルとして認識します。
ということは、もしかして混在して複数ファイルができたりしてないか…?
ちょっと焦って現状どうなっているかを調べました。
また、Windowsでファイル拡張子を一括で変更する方法を紹介します。
WordPressはアップロード時に拡張子を小文字に変換
試しに、「TEST.JPG」というファイル名の画像ファイルを作成し、WordPressのメディアライブラリにアップロードしてみます。
すると、拡張子は小文字「.jpg」になっていました。
自動で小文字に変換されるようです。
「uploads」フォルダ内のファイルも小文字ですね。
とりあえず、サーバー上のファイルは混在してぐちゃぐちゃにはなっていないようで安心しました。
Windowsでファイル拡張子を一括変換するバッチファイル
1つのフォルダ内のみファイル拡張子を一括変換
では、Windowsのローカルで拡張子大文字小文字が混在しているのを解消しておきます。
まずは、シンプルに1つのフォルダ内のファイルを対象に一括変換します。
そのために、ファイル拡張子を大文字「.JPG」から小文字「.jpg」へ一括変換するバッチファイル「@rename.bat」を作成しました。
内容は以下の1行だけです。
ファイル名を変換する「ren(rename)」コマンドで一括変換しています。
ren *.JPG *.jpg
これをフォルダに置いてダブルクリックで実行すれば、フォルダ内の画像ファイルの拡張子「.JPG」を「.jpg」に一括変換します。
ちなみに、僕はファイル名の頭にアットマークを付けて「@rename.bat」としていますが、これはフォルダ内をファイル名順に並べている場合、一番上に来てわかりやすくするためです。
ただし、このファイルをコマンドプロンプトから実行する場合は、「”@rename.bat”」とダブルクォーテーションで囲ってやらないといけないです。
一括変換前後の差異をログ出力
処理前後にファイル名を出力しておけば、一括変換が正しくされたのかどうかを判断しやすいです。
ということで、dirコマンドを使用してファイル一覧を表示し、このようにログを出力させてみました。
@echo off
echo ============ 変更前 ============
dir /B *.jpg
ren *.JPG *.jpg
echo ============ 変更後 ============
dir /B *.jpg
pause
サブフォルダも含めてファイル拡張子を一括変換
サブフォルダも含める場合は、forコマンドを使用すればよいです。
構文は以下のようになっており、セットで該当したファイルに対して1つずつコマンドを実行する感じです。
FOR %変数 IN (セット) DO コマンド [コマンドパラメーター]
以下のように、サブフォルダも含める「/r」オプションを付け、バッチファイル内で使用する場合は「%%変数」という書き方になります。
@echo off
echo ============ 変更前 ============
dir /S /B *.jpg
for /r %%i in (*.jpg) do ren "%%i" *.jpg
echo ============ 変更後 ============
dir /S /B *.jpg
pause
「”%%i”」とダブルクォーテーションで囲っているのは、ヒットしたファイルパスに半角スペースがあってもエラーにならないようにしています。
最後に
とりあえず、これで拡張子を小文字「.jpg」に統一できました。
デジカメやスマホの設定で拡張子を小文字にすることはできなかったので、パソコンの取り込み用フォルダにこのバッチファイルを置いておき、画像を取り込んだら実行するという手順で使おうかと思います。
コメント
「.JPG」を「.jpg」に書き換えたくていろいろ探しました。
実は、手作業で「.JPG」を「.jpg」に書き換えても、「.JPG」に戻ってしまうという現象があり、
このページにたどり着きました。
しかし、やはりだめでした。
手作業のときに、「.JPG」→「.jpeg」→「.jpg」と2段階で書き換えうまくいったことを思い出し、
バッチファイルも2段階にしたらうまくいきました。
2段階の作業は手間がかかるので大変助かりました。
ありがとうございました。
コメントありがとうございます。
書き換えても戻ってしまうっていう状態は謎ですね。。
エクスプローラーがおかしくなってるのかも…ちょっと原因分からないです。。