フォルダ内のファイル名の一部を一括置換
フォルダ内のファイル名の一部を一括置換するには、コマンドを使う。
例)
フォルダの中に以下の5つのファイル達があるとする。
パス:C:¥sample¥test¥
----------
file-sample01.txt
file-sample02.txt
file-sample03.txt
file-sample04.txt
file-sample05.txt
----------
これを以下のように変更する。
----------
file-test01.txt
file-test02.txt
file-test03.txt
file-test04.txt
file-test05.txt
----------
(1)Windows PowerShellを起動し「C:¥sample¥test¥」に移動する。
>cd C:¥sample¥test¥
※必ず該当フォルダに移動する。
※エクスプローラーのアドレスバーの所に「powershell」と打ち込むとそのフォルダに移動した状態でpowershellが立ち上がる!
(2)以下のコマンドを実行する。
>$oldText = '[置換前テキスト]'; $newText = '[置換後テキスト]'; Get-ChildItem | Where-Object { $_.Name -match $oldText } | Rename-Item -NewName { $_.Name -replace $oldText, $newText }
例の場合だと以下のコマンドを実行する。
>$oldText = 'sample'; $newText = 'test'; Get-ChildItem | Where-Object { $_.Name -match $oldText } | Rename-Item -NewName { $_.Name -replace $oldText, $newText }
- PowerShellは複数のコマンドを「|」パイプでつないで実行できる。
- Get-ChildItem<パス>は指定フォルダ内の情報を取得するコマンド。<パス>を指定しない場合は現在のフォルダが対象。
- Rename-Itemはファイル名を変更するコマンド
- replaceは置換コマンド「"文字列".Replace("old","new")」で文字列中のoldをnewに置き換える。
- .Replaceなら大文字小文字の区別をする。正規表現使えない。
- -Replaceなら大文字小文字の区別しない。正規表現が使える。
- 「$_」はパイプで受け取った情報を参照するためのお決まり変数
(参考)ありがとうございます。
https://learn.microsoft.com/ja-jp/powershell/scripting/how-to-use-docs?view=powershell-7.4
https://consulting-campus.site/rename-names-of-file-and-folder-at-once/
https://qiita.com/acuo/items/a4f83d886c4b8a7fcf52
https://itsakura.com/powershell-replace