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メソッドを使って書式設定しています。 書式部分は好きなようにアレンジしてください。