しかし、PowerShellを使うといともあっさり簡単に書き換える事が可能です。
■直接時間を指定して書き換えたい
仮にC:¥TEMP¥TEST_TEST.TXTというファイルがあったとします。
SET-ITEMPROPERTY C:\TEMP\TEST_TEST.TXT LASTWRITETIME "1999-12-31 23:59:59.997"
で行けます。
ポイントは、このPowerShellに限らずSQL-Serverとかもそうなんですが、"yyyy-MM-dd hh:mm:ss"という書式でもって文字列を書くと、処理系から日時として認識してもらえるという点です。
↑あっさりとファイルの更新日時が書き変わりました。
■本日の日時をセットしたい時
SET-ITEMPROPERTY C:\TEMP\TEST_TEST.TXT LASTWRITETIME (Get-Date -Format "yyyy-MM-dd hh:mm:ss")
ただ、-Formatオプションだと何か落ち着かいないという場合は、(Get-Date).ToString("yyyy-MM-dd hh:mm:ss")とも書けます。
↑ファイルの更新日時が、実行時の本日の日時に書き変わりました。
■先月の日時をセットするなど、日付に計算を施したい
SET-ITEMPROPERTY C:\TEMP\TEST_TEST.TXT LASTWRITETIME (Get-Date).AddMonths(-1).ToString("yyyy-MM-dd hh:mm:ss")
Get-Dateコマンドレットは日付を扱う時の必殺技というくらい強力で、たとえば先月(-1ヵ月)の日時を求めたい時は(Get-Date).AddMonths(-1)だけでOK。
↑ファイルの更新日時が先月になりました。
ちなみに、Get-Dateにどんなメンバー(プロパティやメソッドなどをいっしょくたにメンバーと呼びます)があるのか?を知りたい時は以下のコマンドで分かります。
Get-Date | GET-MEMBER
TypeName: System.DateTime
Name MemberType Definition
---- ---------- ----------
Add Method datetime Add(timespan value)
AddDays Method datetime AddDays(double value)
AddHours Method datetime AddHours(double value)
AddMilliseconds Method datetime AddMilliseconds(double value)
AddMinutes Method datetime AddMinutes(double value)
AddMonths Method datetime AddMonths(int months)
AddSeconds Method datetime AddSeconds(double value)
AddTicks Method datetime AddTicks(long value)
AddYears Method datetime AddYears(int value)
CompareTo Method int CompareTo(System.Object value), int CompareTo(datetime value), int IComparab...
Equals Method bool Equals(System.Object value), bool Equals(datetime value), bool IEquatable[d...
GetDateTimeFormats Method string[] GetDateTimeFormats(), string[] GetDateTimeFormats(System.IFormatProvide...
GetHashCode Method int GetHashCode()
GetObjectData Method void ISerializable.GetObjectData(System.Runtime.Serialization.SerializationInfo ...
GetType Method type GetType()
GetTypeCode Method System.TypeCode GetTypeCode(), System.TypeCode IConvertible.GetTypeCode()
IsDaylightSavingTime Method bool IsDaylightSavingTime()
Subtract Method timespan Subtract(datetime value), datetime Subtract(timespan value)
ToBinary Method long ToBinary()
ToBoolean Method bool IConvertible.ToBoolean(System.IFormatProvider provider)
ToByte Method byte IConvertible.ToByte(System.IFormatProvider provider)
ToChar Method char IConvertible.ToChar(System.IFormatProvider provider)
ToDateTime Method datetime IConvertible.ToDateTime(System.IFormatProvider provider)
ToDecimal Method decimal IConvertible.ToDecimal(System.IFormatProvider provider)
ToDouble Method double IConvertible.ToDouble(System.IFormatProvider provider)
ToFileTime Method long ToFileTime()
ToFileTimeUtc Method long ToFileTimeUtc()
ToInt16 Method int16 IConvertible.ToInt16(System.IFormatProvider provider)
ToInt32 Method int IConvertible.ToInt32(System.IFormatProvider provider)
ToInt64 Method long IConvertible.ToInt64(System.IFormatProvider provider)
ToLocalTime Method datetime ToLocalTime()
ToLongDateString Method string ToLongDateString()
ToLongTimeString Method string ToLongTimeString()
ToOADate Method double ToOADate()
ToSByte Method sbyte IConvertible.ToSByte(System.IFormatProvider provider)
ToShortDateString Method string ToShortDateString()
ToShortTimeString Method string ToShortTimeString()
ToSingle Method float IConvertible.ToSingle(System.IFormatProvider provider)
ToString Method string ToString(), string ToString(string format), string ToString(System.IForma...
ToType Method System.Object IConvertible.ToType(type conversionType, System.IFormatProvider pr...
ToUInt16 Method uint16 IConvertible.ToUInt16(System.IFormatProvider provider)
ToUInt32 Method uint32 IConvertible.ToUInt32(System.IFormatProvider provider)
ToUInt64 Method uint64 IConvertible.ToUInt64(System.IFormatProvider provider)
ToUniversalTime Method datetime ToUniversalTime()
DisplayHint NoteProperty DisplayHintType DisplayHint=DateTime
Date Property datetime Date {get;}
Day Property int Day {get;}
DayOfWeek Property System.DayOfWeek DayOfWeek {get;}
DayOfYear Property int DayOfYear {get;}
Hour Property int Hour {get;}
Kind Property System.DateTimeKind Kind {get;}
Millisecond Property int Millisecond {get;}
Minute Property int Minute {get;}
Month Property int Month {get;}
Second Property int Second {get;}
Ticks Property long Ticks {get;}
TimeOfDay Property timespan TimeOfDay {get;}
Year Property int Year {get;}
DateTime ScriptProperty System.Object DateTime {get=if ((& { Set-StrictMode -Version 1; $this.DisplayHin...
というか、自分が学生時代にPowerShellとJavaScriptがこうやってバリバリ使える環境になっていたらなぁと、うらやましくて大変です。
漠然とやりたい事をひねり出さなくても、Windows(などのOS)と対話しながら、実際にこうやって作業をしながらコンピューターに親しめるのは本当に大きい。