PowerShell: ファイル名の先頭に更新日付を追加する
PowerShellでファイル名を変更するにあたって、
先頭にファイルの更新日付を追加することもできます。
例えば、ファイル「test.txt」の更新日付が「2022/1/1」だとすると
「2022-01-01-test.txt」のように
更新日付を追加したファイル名に変更できます。
これはGet-ChildItem、ForEach-Object、 Rename-Itemの3つのコマンドレットを組み合わせることで実現可能です。 コマンド名から推測できるように、Get-ChildItemはファイル名を取得、 ForEach-Objectはループ、Rename-Itemはファイル名を変更します。
次のコードは「d:\temp」フォルダ内にある「*.txt」ファイルを対象として、 ファイルの更新日付を追加します。
PowerShell
Get-ChildItem d:\temp\*.txt | ForEach-Object { # 変更するファイル名 $d = $_.LastWriteTime.toString("yyyy-MM-dd-") + $_.BaseName + $_.Extension # 変更 Rename-Item $_ $d }
上のコードを実行すると、 「test.txt」が「2022-01-01-test.txt」、 「sample.txt」が「2022-02-05-sample.txt」のように変更されます。
「$_.BaseName」はファイル名の拡張子を除いた部分、 「$_.Extension」はファイルの拡張子、 「$_.LastWriteTime」はファイルの更新日付です。 ファイルの更新日付は toStringメソッドを使って書式設定しています。 書式部分は好きなようにアレンジしてください。