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 に更新されていることが確認できました。