【Powershell】ファイルの更新日時を変更してみた(Set-ItemProperty)

Powershell Powershell

Powershellを利用してファイルの更新日時を変更してみました。

合わせて作成日時とアクセス日時の変更方法もまとめています。

広告

ファイルの更新日時を変更する

以下のコマンドで変更することが可能です。

Set-ItemProperty <ファイルのパス> -Name LastWriteTime -value <変更したい時間(yyyy/mm/dd hh:MM:ss)>

ファイルの更新日時を変更

1.変更前の更新日時を確認

以下の記事を参考に確認します。

PS C:\> $path = "C:\time-change.txt"
PS C:\> $folder_path = Split-Path $path
PS C:\> $file_name = Split-Path $path -Leaf
PS C:\> $shell_obj = New-Object -COMObject Shell.Application
PS C:\> $folder_obj = $shell_obj.Namespace($folder_path)
PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> $folder_obj.GetDetailsOf($file_obj, 3)
2024/09/20 12:06
PS C:\>

確認の結果、time-change.txt のファイル更新日時は 2024/09/20 12:06 であることが分かります。

2.コマンド実行

ファイルの更新日時を変更します。

今回は1か月前の時間(2024/08/20 00:00:00)を設定します。

PS C:\> Set-ItemProperty "C:\time-change.txt" -Name LastWriteTime -value "2024/08/20 00:00:00"
PS C:\>

特に出力などは出ずに完了します。

3.変更後の更新日時を確認

再度更新日時を確認します。

PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> $folder_obj.GetDetailsOf($file_obj, 3)
2024/08/20 0:00
PS C:\>

再度オブジェクトを読み込んで確認すると 2024/08/20 0:00 に変更されていることが分かります。

念のためファイルエクスプローラーでも確認しますが変更されています。

更新日時が変更されていることをファイルエクスプローラーで確認

[参考] 作成日時とアクセス日時を変更する

作成日時とアクセス日時も同じようなコマンドで変更できます。

・作成日時の更新

Set-ItemProperty <ファイルのパス> -Name CreationTime -value <変更したい時間(yyyy/mm/dd hh:MM:ss)>

・アクセス日時の更新

Set-ItemProperty <ファイルのパス> -Name LastAccessTime -value <変更したい時間(yyyy/mm/dd hh:MM:ss)>

作成日時とアクセス日時を変更

作成日時とアクセス日時をまとめて更新してみます。

1.変更前の状態を確認

まずは変更前の確認から。
それぞれ 2024/09 の日付であることが確認できます。

PS C:\> $path = "C:\time-change.txt"
PS C:\> $folder_path = Split-Path $path
PS C:\> $file_name = Split-Path $path -Leaf
PS C:\> $shell_obj = New-Object -COMObject Shell.Application
PS C:\> $folder_obj = $shell_obj.Namespace($folder_path)
PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> 3..5 | Foreach-Object { "{1} : {2}" -f $_, $folder_obj.GetDetailsOf($null, $_), $folder_obj.GetDetailsOf($file_obj, $_) }
更新日時 : 2024/08/20 0:00
作成日時 : 2024/09/09 13:38
アクセス日時 : 2024/09/20 12:06
PS C:\>

2.コマンド実行

ファイルの更新日時を変更します。

今回は2か月前の時間(2024/07/20 00:00:00)を設定します。

PS C:\> Set-ItemProperty "C:\time-change.txt" -Name CreationTime -value "2024/07/20 00:00:00"
PS C:\> Set-ItemProperty "C:\time-change.txt" -Name LastAccessTime -value "2024/07/20 00:00:00"
PS C:\>

特に出力などは出ずに完了します。

3.変更後の更新日時を確認

再度更新日時を確認します。

PS C:\> $file_obj = $folder_obj.ParseName($file_name)
PS C:\> 3..5 | Foreach-Object { "{1} : {2}" -f $_, $folder_obj.GetDetailsOf($null, $_), $folder_obj.GetDetailsOf($file_obj, $_) }
更新日時 : 2024/08/20 0:00
作成日時 : 2024/07/20 0:00
アクセス日時 : 2024/07/20 0:00
PS C:\>

再度オブジェクトを読み込んで確認すると 2024/07/20 0:00 に更新されていることが確認できました。

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