10yroの開発日記

福岡にある株式会社10yro(トイロ)のエンジニアが書いています

Windowsでファイル名を一括変換する

ファイル名を一括で置換する方法を紹介します。

シェルスクリプトを使った内容となっています。)


1.まずはスクリプトのファイルを作成

拡張子が "sh" のファイル(以下)を作成します。

ファイル名:「batch-process-script.sh」

※その他のファイル名で作成する場合、後に記載のスクリプト内のファイル名は合わせて変更してください。


2.作成したファイルの中身を以下とします。

#!/bin/bash
set -e -u -o pipefail

# 【入力欄】---------------------------------------

# 置換前の文字を以下の""内に入力してください。
readonly BEFORE_CHANGE=""

# 置換後の文字を以下の""内に入力してください。
readonly AFTER_CHANGE=""

# -------------------------------------------------

readonly TARGET_PATH="./"

echo "start"

while read -r f; do
    # This file is excluded.
    if [ $f = "./batch-process-script.sh" ]; then
        continue
    fi
    
    # Directory is excluded.
    if [ -d $f ]; then
        continue
    fi
    
    replaced_name=${f/"$BEFORE_CHANGE"/"$AFTER_CHANGE"}
    echo $f "=>" $replaced_name
    mv $f $replaced_name
    
done < <(find $TARGET_PATH -mindepth 1 -maxdepth 1)

echo "end"

read -p "To close a window, press Enter."

【入力欄】の[BEFORE_CHANGE], [AFTER_CHANGE] には変換したい文字と、変換後の文字を記載して保存します。

例)

 ファイル名の"file" を "test" に変えたい場合は以下

 file-excel-0001.xlsx => test-excel-0001.txt

# 【入力欄】---------------------------------------

# 置換前の文字を以下の""内に入力してください。
readonly BEFORE_CHANGE="file"

# 置換後の文字を以下の""内に入力してください。
readonly AFTER_CHANGE="test"

# -------------------------------------------------


3.後は、このファイルを変更したいファイルがある場所にコピーして実行(ダブルクリック)するだけで、ファイル名を一括で置換できます。

実行したファイル(作成したshファイル)と同じフォルダにある全てのファイルに対して変換が実行されることに注意してください。

実行結果として以下のようなWindowが表示されます。

結果は以下のようになります。

以上、スクリプトでファイル名を一括で変換する方法の紹介でした。


Windowsのツール(PowerRename)を使うなど

ファイル名の一括変更のやり方は色々あると思いますので

正規表現を用いた変換など細かい制御がしたい場合は、活用してみてください。

PowerRename:https://learn.microsoft.com/ja-jp/windows/powertoys/powerrename