【PowerShell】ファイル名をcsvで指定したファイル名に一括リネームする方法

PowerShell

どうもcoto.です。
今回は複数のファイル名をcsvで指定した名前に付け替える方法のご紹介。

使用ソフトと用意するファイル

使用ソフト

Windows PowerShell
(Windows7以降のPCならインストールしなくても標準で搭載されています。初めて使う場合はスタートボタン右の検索バーに入力するとすぐ見つかります。)

用意するファイル

・リネームしたいファイル群:今回のコマンドでは単一拡張子(jpg)を指定しています。変更可。

ファイル名を変えたい画像ファイル群

・CSV
 リネームするファイル群と同じフォルダに rename.csv という名前で入れておきます。内容は以下の通り。1行目を見出し行としてnewname、oldnameと入れておきます。newname列のほうにリネーム後の新しいファイル名、oldname列のほうに現在のファイル名を入れます。順番は関係ありません。

rename.csvの内容

存在しないファイルの行がある場合エラーメッセージは出ますが動作します。
すでに存在するファイル名にリネームする指示がある場合もエラーメッセージは出ますが動作します。

コマンド

# フォルダ指定
[string]$InFolder  = '①C:\Users\自分のPCの名前\Desktop\test'

# csv読込
$namedata = Import-Csv $InFolder\rename.csv  -Encoding UTF8

# csvの行数カウント(処理のために-1)
$row = ($namedata).count -1
$i = 0

# csvの行数分リネームを繰り返す
while ($i -le $row) {
$target = $InFolder+ "\" + $namedata[$i].oldname + ".jpg"
$New    = $namedata[$i].newname + ".jpg"
Rename-Item $target $New

$i +=1
}

解説と使い方

① C:\Users\自分のPCの名前\Desktop\test はファイルやcsvを入れているフォルダの絶対パスです。

jpgではない場合は13行目、14行目の ”.jpg” 部分を書き換えてください。
拡張子がバラバラなファイル群の場合は

$target = $InFolder+ “\” + $namedata[$i].oldname
$New = $namedata[$i].newname

としてしまって、csvにあらかじめ拡張子まで入れておくのが良いと思います。

使い方

1.メモ帳などにコードをコピーし上記の①を設定する。

2.PowerShellを開く

3.1.で作製したコードを全てコピーしてPowerShellの画面上で右クリック

御託

今回のコマンドは、前回ご紹介したファイル名一括取得↓の後に行う処理のために作ったものです。

リネーム前後の名前が法則性のあるものならcsvを経由しないほうが楽ですが、バラバラな場合、一回csv挟むほうが良いと思うので作りました。

どなたかのお役に立てば。

コメント