業務で、単体テストを行なっている時に、特定の日付の更新日時のファイルが必要になることがありました。
例えば、今日の日付から30日前、45日前、90日前の更新日時のファイルが必要という感じです。
Windows 10では、次の2通りの対応方法があります。
- 誰かが作成したフリーソフトで対応する
- PowerShell を利用して、コマンドを打って対応する
業務で使用するPCでは、勝手にフリーソフトを入れるわけにはいかないので、PowerShellを利用して対応をしました。
任意の日付の更新日時のファイルを用意する方法を上司に相談したところ、
社内のファイルサーバーから、目当ての日付のファイルを探してと言われました。
地道に存在するか分からないファイルを探すのは、嫌だったので今回の方法を調べました。
【重要】この記事で伝えたいこと
〇Windows10での、ファイルの更新日時を好きな日付に変更する方法
〇追加インストールなしで、更新日時を変更できる
課題の原因
Windows10では、ファイルのプロパティから、更新日時を自分が好きな日時に変更することはできません。
このように、ファイルのプロパティを開いても、項目が存在するだけで、書きかえることはできません。
更新日時は、ファイルが書きかえられた日時を知るためのものなので、書きかえられないのは、当然かもしれません。
課題の解決方法
PowerShell を使って、コマンドを打つことでファイルの更新日時を変更します。
PowerShell とは、MicroSoft が開発したスクリプト言語およびキャラクターユーザーインターフェースの1つです。
つまり、マウスを使うのではなく、キーボードを使って、OSであるWindowsに命令を実行させるツールのことです。
PowerShell は、キーボードのスタートボタンを押して、「Powershell」と検索すると表示されます。
起動すると、青い画面が画面に広がります。
PowerShellは、Windows10 を使用している人であれば、使うことができます。
追加で、インストールが必要になるものはありません。
実際のコマンド
Set-ItemProperty example.txt -name LastWriteTime -value "2021/01/01 12:00:00"
「Set-ItemProperty」と打ち込んだ後に、半角のスペースを1つ空けて、更新日時を変更したいファイル名を指定します。
その後、「-name LastWriteTime」という部分で、変更するのは更新日時だということを指定します。
そして、「-value」に続けて、上記のような形で日時を選択することで、変更したい日時を指定します。
このコマンドは、PowerShellで更新日時を変更したいファイルが存在する階層まで、移動してから、使用します。
例えば、デスクトップに表示されているファイルの更新日時を変更したい場合、PowerShell を開いた後に、「cd desktop」とコマンドを打ち込んで、デスクトップに移動してから、「Set-ItemProperty ~~」のコマンドを打ち込みましょう。
画像付きで、手順を紹介
画像のように、PCのデスクトップに配置されている「example.txt」というテキストファイルの更新日時を変更してみます。
この「example.txt」は、ファイルを作成しただけなので、プロパティから確認できる作成日時と更新日時が同じ日時になっています。
この更新日時を、変更していきます。
まず、PowerShell を起動します。
そして、cd コマンドで、デスクトップに移動します。
その後に、先ほど紹介したコマンドを打ち込みます。画像の例では、更新日時を1年前の日付に戻そうとしています。
コマンドを打ち込み終えたら、エンターキーを押します。
すると、次の行の入力を待機するように変わります。特に更新日時の書き換えに成功したというメッセージは表示されません。
もし、コマンドを打ち間違えていたり、おかしな日付の形式を指定していた場合は、エラーメッセージが赤文字で表示されるので、すぐに分かります。
エラーになった時は、一度落ち着いて、打ち込んだコマンドに間違いがないか探しましょう。
良くあるのは、単純なスペルミスです。
すると、画像のように、更新日時がコマンドで指定した「2020年12月15日 7時00分」に書き換わります。
更新日時だけではなく、作成日時も変更できます。
Set-ItemProperty example.txt -name LastWriteTime -value "2021/01/01 12:00:00"
先ほど紹介したこのコマンドの、「LastWriteTime」の部分を、「CreationTime」に変更するだけです。