電子成果などでファイルの作成日付や編集日付を納期前に設定しないといけないことが、希にだがよくある。
ファイルを編集する時にパソコンの日付をいじってしまえばできなくはないけど、ネットワークに接続されたパソコンの日付が大きく変わるとネットワークにアクセスするタイプの操作ではトラブルが起こる可能性もあるのでPowerShellで日付だけを変更する方法を探した。
更新日時を変更する場合
PS> Set-ItemProperty %FileName% -Name LastWriteTime -Value "%日時%"
作成日時を変更する場合
PS> Set-ItemProperty %FileName% -Name CreationTime -Value "%日時%"
%日時%に日付と時間を設定する。
例えば2014年2月28日の午前10:50としたいのであれば、「02/28/2014 10:50 AM」という文字列を入れればOk。
ここで入れる文字列はおそらく [Datetime]::Parse
でパースできる文字列になっていれば大丈夫なはず。例えば「2014/2/28 10:50」でも日時を読み取ってくれた。
扱えるプロパティは日時だけではなく下記の様なコマンドで一覧を見ることができる。
PS> Get-ItemProperty %FileName% | Get-Member -MemberType Property
TypeName: System.IO.FileInfo
Name MemberType Definition
---- ---------- ----------
Attributes Property System.IO.FileAttributes Attributes {get;set;}
CreationTime Property System.DateTime CreationTime {get;set;}
CreationTimeUtc Property System.DateTime CreationTimeUtc {get;set;}
Directory Property System.IO.DirectoryInfo Directory {get;}
DirectoryName Property System.String DirectoryName {get;}
Exists Property System.Boolean Exists {get;}
Extension Property System.String Extension {get;}
FullName Property System.String FullName {get;}
IsReadOnly Property System.Boolean IsReadOnly {get;set;}
LastAccessTime Property System.DateTime LastAccessTime {get;set;}
LastAccessTimeUtc Property System.DateTime LastAccessTimeUtc {get;set;}
LastWriteTime Property System.DateTime LastWriteTime {get;set;}
LastWriteTimeUtc Property System.DateTime LastWriteTimeUtc {get;set;}
Length Property System.Int64 Length {get;}
Name Property System.String Name {get;}
「set;」を持つプロパティは日付と同じコマンドで変更が可能らしい。