Windows でファイル日付を変更する

f:id:Naotsugu:20170217233212p:plain

Windows ではファイルのタイムスタンプを更新するための標準コマンドが用意されていません。

*nix 系だと touch コマンドを使用しますが、Windows の場合は PowerShell を使う必要があります。


Linux では touch

Linux でファイルのタイムスタンプを変更するには touch コマンドで簡単に実施できます。


最終アクセス時刻を変更

最終アクセス時刻を 2017年07月23日12時30分 に設定するには -a オプションを使います。

$ touch -at 20170723123000 hoge.txt 


最終更新日時を変更

最終更新日時を変更する場合は -m オプションを指定します。

$ touch -mt 20170723123000 hoge.txt 


-t は日時指定のオプションですが、-d を使うことで読みやすい指定ができます。

$ touch -md "2017/07/23 12:30:00" hoge.txt



Windows で touch

Windows の場合はコマンドが無く、GUI からの更新もできません。

なので PowerShell 使うことになります。


更新日時の変更
PS> Set-ItemProperty "C:\hoge.txt" -Name LastWriteTime -Value "2015/01/01 10:20:30"


作成日時の変更
PS> Set-ItemProperty "C:\hoge.txt" -Name CreationTime  -Value "2015/01/01 10:20:30"


一括変更

複数ファイルをまとめて変更する場合は以下のようにできます。

PS> Get-ChildItem -Path "C:\*.txt" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name LastWriteTime -Value "2015/01/01 10:20:30" }


作成日時も同様に行うことができます。

PS> Get-ChildItem -Path "C:\*.txt" | Where-Object { $_ -is [System.IO.FileInfo] } | ForEach-Object { Set-ItemProperty $_.FullName -Name CreationTime -Value "2015/01/01 10:20:30" }


Set-ItemProperty のその他のオプションは以下を参照してください。

docs.microsoft.com



Windows PowerShell イン アクション

Windows PowerShell イン アクション

  • 作者:Bruce Payette
  • 出版社/メーカー: SBクリエイティブ
  • 発売日: 2007/07/31
  • メディア: 単行本

【改訂新版】 Windows PowerShell ポケットリファレンス

【改訂新版】 Windows PowerShell ポケットリファレンス

  • 作者:牟田口 大介
  • 出版社/メーカー: 技術評論社
  • 発売日: 2013/02/23
  • メディア: 単行本(ソフトカバー)