Windows10でファイルの日時をPowerShellコマンドレットで設定する方法

Windows環境でファイル操作を行う場合に、ファイルの日付を更新したり特定の日付に設定したいときがあります。

そのような場合、サードパーティーのツールを使うのも手ですが、そんなことをせずとも、標準のコマンド(PowerShellコマンドレット)でカンタンに変更することができます。

ここでは、PowerShellコマンドレットでファイルの時刻情報を設定する方法を紹介します。

動作環境

この記事は、以下の環境で実行した結果を基にしています。他のエディションやバージョンでは、動作結果が異なる場合があることをご了承ください。

ソフトウェア バージョン
Windows10 Professional 64bit 1903

ファイルの時刻情報を設定する

PowerShellでファイルの時刻情報を設定するときは「Set-ItemProperty」コマンドレットを利用します。

基本的な使い方

たとえば、ファイル(test.txt)の最終更新日時に現在の日時を設定したい場合は、次のように実行します。

Set-ItemProperty test.txt -Name LastWriteTime -Value $(Get-Date)

また、以下のように実行すれば、複数のファイルにまとめて設定することもできます。

dir test* | % { $_.LastWriteTime = $(Get-Date) }

上の例では、カレントディレクトリにあるファイル名が「test」から始まるすべてのファイルに対して、最終更新日時に現在の日時を設定しています。

利用可能なプロパティ

上の基本的な使い方では、最終更新日時を設定したため、プロパティに「LastWriteTime(最終変更日時)」を指定していますが、それ以外にも「LastAccessTime(最終アクセス日時)」と「CreationTime(作成日時)」が指定できます。

日時の指定方法

上の基本的な使い方では、現在日時を指定する方法として「$(Get-Date)」を使用していますが、以下のように、特定の日時を指定することもできます。

Set-ItemProperty test.txt -Name LastWriteTime -Value "2019/07/16"
Set-ItemProperty test.txt -Name LastWriteTime -Value "2019/07/16 10:15:30"

PowerShell以外の方法

PowerShell以外で、ファイルの時刻情報を設定する方法としては、WSL(Windows Subsystem for Linux)を導入して、touchコマンドで設定する方法や、コマンドプロンプトからCopyコマンドを使って設定する方法があります。

WSLのtouchコマンドを利用する場合は、コマンドプロンプトなどで「wsl touch <ファイル名>」と実行することで、ファイルの最終更新日時が現在日時に設定できます。

Copyコマンドを利用する場合は、コマンドプロンプトなどで「copy <ファイル名>+」と実行して、ファイルに空データを追加することで、ファイルの最終更新日時を現在日時に更新することができます。

PowerShellを利用できない場合の方法として覚えておくと、いざというときに役立ちます。

あとがき

複数のファイルに時刻情報を設定したい場合や、ファイルの時刻情報を特定の日時に設定したい場合に重宝しますね。

おすすめコンテンツ:
トップへ戻る