powershellでフォルダ内にある複数のファイル名を一括置換

スポンサーリンク
スポンサーリンク

ファイル名の特定の文字だけ取り除く

フォルダ内ファイル名の例

  • 織田_202201 book1.xlsx
  • 山田_202201.xlsx
  • 田中_202201 book1.xlsx

↑例えばこのファイル名一覧から「book1」という文字だけ取り除く

方法

  • windowsでpowershellを起動
  • cd でフォルダ内に移動
  • 以下を実行

これで特定の文字をファイル名一覧から取り除くことができる。

ls | Rename-Item -NewName { $_.Name -replace 'book1',''}

解説
ls:ファイルやディレクトリを表示
|:パイプラインと呼ばれる。処理を後ろに渡す
Rename-Item:指定した項目の名前を変更する
$_:PowerShell上で利用可能な特殊変数の1つ、パイプ経由で渡されたオブジェクトを表す

ファイル名一覧から半角スペースを取り除く

ls | Rename-Item -NewName { $_.Name -replace '\s',''}

先頭と最後の文字を指定して一致したら変更

ls | Rename-Item -NewName { $_.Name -replace 'b.+t','---'}

特定の文字以降を削除

山田_222.xlsx
村田_222.xlsx

山田.xlsx
村田.xlsx

ls | Rename-Item -NewName { $_.Name -replace '_.+(.xlsx)','.xlsx'}

yyyy年mm月⇒yyyymmに変更

フォルダ名
・2021年01月
・2021年02月

・202101
・202102

ls | Rename-Item -NewName {$_.Name -replace '([0-9][0-9][0-9][0-9])年([0-9][0-9])月','$1$2'}

エラー

フォルダ名「新しいフォルダー (1)」でcdで移動しようとするとエラーが出た。

エラー内容

Set-Location : 引数 '1' を受け入れる位置指定パラメーターが見つかりません。
+ CategoryInfo : InvalidArgument: (:) [Set-Location]、ParameterBindingException
+ FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.PowerShell.Commands.SetLocationCommand

フォルダ名を変更したらエラーは解消された。

コメント

タイトルとURLをコピーしました