LoginSignup
5
8

More than 5 years have passed since last update.

PowerShellでファイル名を一括置換する簡単な例

Posted at

PowerShellでファイル名を一括置換する簡単な例

前提

  • 概要

    • PowerShellでファイル名の簡単な置換をやりたい人向け
    • とりあえずこれだけでも素早くできれば、業務で楽ができるという内容
    • もっと色々やりたい人は、こちらがよい。
  • 注意事項

    • PowerShellスクリプトの文字エンコーディングは Shift JIS にする。
    • ※ PowerShellで日本語を含むスクリプトを書く場合は、UTF8のBOMあり、もしくはShift JISになる。
  • 実施環境

    • 以下のスクリプトは、変更対象のファイルが存在するフォルダで起動するものとする。

ファイル名の単純な変更

  • シチュエーション

    • フォルダ内に 〇〇_test_reslut.log というファイルがたくさんあるとする。
    • これを一括で 〇〇_unit_test_reslut.log というファイル名に変更したいとする。
  • コード

   # ファイル名の最後が .log で終わるファイルを取得する。
   $File = Get-ChildItem ./ -Name | Where-Object {$_ -match '.log$'}
   foreach ($OldName in $File) {
      # _test の部分を _unit_test に変更する。
      $NewName = $OldName.Replace('_test', '_unit_test')
      # ファイル名を変更する。
      Rename-Item -Path $OldName -NewName $NewName
   }

日付のフォーマットを変更したい

  • シチュエーション

    • フォルダ内に 〇〇_test_20190303.log のような形式で日付の入ったファイルがたくさんある。
    • これを一括で 〇〇_test_2019-03-03.log という形式のファイル名に変更したいとする。
  • コード

   # ファイル名の最後が ._<数字8桁>_log で終わるファイルを取得する。
   $File = Get-ChildItem ./ -Name | Where-Object {$_ -match '_\d{8}.log$'}
   foreach ($OldName in $File) {
      # <数字8桁>の部分の形式を変える。
      $NewName = $OldName -replace '_test_(\d{4})(\d{2})(\d{2})', '_test_$1-$2-$3'
      # ファイル名を変更する。
      Rename-Item -Path $OldName -NewName $NewName
   }
5
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
8