社内SEの徒然なる日記

PowerShellでファイルのタイムスタンプを一括変更

■ jsp

とあるシステム開発で、基準日以降に更新されたファイルの一覧を抽出する処理があるのですが、サーバー移行とか色々とあってファイルの更新日時が書き換わってしまいました。

さて、どうやって復元しましょうかね。

■ 取得

更新日付の取得は、「Get-ItemProperty」コマンドレットで出来るようです。

「aaaa.ps1」というファイルの更新日付を取得してみます。
PowdrShellで更新日付を変更 - 1


PS D:¥> Get-ItemProperty aaaa.ps1


ディレクトリ: D:¥


Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 2017/03/14 14:28 569410 aaaa.ps1


PS D:¥> (Get-ItemProperty aaaa.ps1).LastWriteTime

2017年3月14日 14:28:39


PS D:¥> (Get-ItemProperty aaaa.ps1).LastWriteTime.ToString('yyyy/MM/dd HH:mm:ss')
2017/03/14 14:28:39
PS D:¥>


単純に実行、LastWriteTimeを追加、ToStringで整形と試してみましたが、良い感じで取得できそうです。

■ 変更

更新日付を変更するには、「Set-ItemProperty」コマンドレットを使います。実行して、再取得してみたのですが上手いこと更新日付が変わってくれました。
PowdrShellで更新日付を変更 - 2

PS D:¥> Set-ItemProperty aaaa.ps1 -Name LastWriteTime -Value '1999/07/19 21:35:10'
PS D:¥> (Get-ItemProperty aaaa.ps1).LastWriteTime.ToString('yyyy/MM/dd HH:mm:ss')
1999/07/19 21:35:10
PS D:¥>


■ 後書き

ちなみに、作成日付は「LastWriteTime」の部分を「CreationTime」に変えるだけで同じことが出来ました。

最初の話に戻りますが、更新日付を書き換えたいファイルって数百件あります。最初はループ処理でも作ろうかと思ったのですが、面倒になってファイルの数だけ「Set-ItemProperty」を書き込んだスクリプトを作って実行することにしました。そのスクリプトが「aaaa.ps1」だったりします。

要件が「基準日以降に更新されたファイル」で、基準日がコロコロ変わるものでもなかったので、一括変更で十分だったのです。

最新の記事:http://harikofu.blog.fc2.com/
投稿記事の一覧:http://harikofu.web.fc2.com/

--- blog end --- スポンサードリンク

PageTop

コメント


管理者にだけ表示を許可する