SKY-OUTPUT

メーカー子会社勤務のSEがガジェットレビューや仕事で学んだこと、ライフスタイルについて書くブログ。システム開発関係の記事では丁寧に解説していきます。最近はバッチばかり作ってる。

ファイル名を一括置換するpowershellスクリプト

ファイル名を置き換えるpowershellスクリプトを作成しましたので紹介します。第一引数にディレクトリを指定し、その配下にあるファイルに対し、ファイル名に含まれるある文字列を指定した文字列で置換するスクリプトを作りました。簡単に言うと、ファイル名を置換するスクリプトです。引数に関しては実装で数を減らしたりもすることが出来るので、今回はあくまで一例としてみて下さい。置換対象、置換後の文字列は引数で指定しようとも思いましたが、私が普段使う用途だといちいち入力するのがめんどくさいので固定しています。仕事なのでディレクトリ内のファイル名を一括で置換するときの効率化にでもどうぞ。

スクリプトファイル名

ファイル名は自由に変更しても良いです。今回は下記ファイル名で手順の説明を進めさせていただきます。

ファイル名:Rename-Files.ps1

ディレクトリ:C:\work

f:id:SKY-BLOG:20190212002933p:plain

ソースコード

下記ソースコードをコピーして使用してください。

#置換対象の文字列
$before = "【置換前】"
#置換後の文字列
$after= "【置換後】"
# 1.ディレクトリ(第1引数で受け取る)
$dir = $Args[0]
# 2.ディレクトリのアイテム一覧を取得
$itemList = Get-ChildItem $dir
foreach($item in $itemList)
{
  # 3.ファイルの場合ファイル名を変更する
  if(-not $item.PSIsContainer)
  {
    Get-ChildItem $item.FullName | Rename-Item -NewName { $_.Name -replace $before,$after}
  }
}

▲変数beforeとafterは仕様用途によって変更して下さい。

実行方法

Windows PowerShellを表示する

f:id:SKY-BLOG:20190212001615p:plain

▲アドレスバーにpowershellと入力すると、Windows PowerShellのウィンドウを表示できます。

f:id:SKY-BLOG:20190212001853p:plain

Windows PowerShellが表示されます。

コマンドを入力しスクリプトを実行する

Windows PowerShellに下記コマンドを入力し、作成したスクリプトを実行します。

コマンド:.Rename-Files.ps1 "対象のディレクトリ"

※対象のディレクトリは、C:work est とする。

f:id:SKY-BLOG:20190212002007p:plain

powershellの実行が許可されていない環境の場合

powershellの実行が許可されていない環境の場合は下記コマンドを先頭に加え実行してください。このコマンドを加えることでpowershellスクリプトの実行が許可されます。

追加コマンド:powershell -ExecutionPolicy RemoteSigned -File 

コマンド:powershell -ExecutionPolicy RemoteSigned -File .Rename-Files.ps1 "対象のディレクトリ"

※対象のディレクトリは、C:work est とする。

f:id:SKY-BLOG:20190212002257p:plain

動作確認

作成したpowershellスクリプトが正しく動作しているか確認します。

実行前

f:id:SKY-BLOG:20190212002609p:plain

実行後

フォルダ内のファイル名が一括置換されました。

実行前:置換前

実行後:置換後

f:id:SKY-BLOG:20190212002719p:plain