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

PowerShell