59

Is it possible to change a file or folders last modified date/time via PowerShell?

I have a folder folder1/ and I want to change the last modified date and time of that folder and it's contents via PowerShell.

Jack
  • 831

5 Answers5

58

Get the file object then set the property:

$file = Get-Item C:\Path\TO\File.txt
$file.LastWriteTime = (Get-Date)

or for a folder:

$folder = Get-Item C:\folder1
$folder.LastWriteTime = (Get-Date)
EBGreen
  • 9,395
27

The following way explained here works for me. So I used:

Get-ChildItem  C:\testFile1.txt | % {$_.LastWriteTime = '01/11/2005 06:01:36'}

Do not get confused by the "get-*" command... it will work regardless that it is a get instead of write or something. Keep also noted as written in the source that you need to use YOUR configured data format and maybe not the one in my example above.

BastianW
  • 709
  • 5
  • 11
  • 1
    That would be for all files within a folder. If it's just a single file, you could do (gci C:\testFile1.txt).LastWriteTime = '01/11/2005 06:01:36'. You can also replace the 'time' with Get-Date to dynamically set the current timestamp. – Blaisem Feb 02 '21 at 10:22
11

Yes, it is possible to change the last modified date. Here is a one liner example

powershell foreach($file in Get-ChildItem folder1) {$(Get-Item $file.Fullname).lastwritetime=$(Get-Date).AddHours(-5)}
  • 1
    This was useful for me thanks. The Get-ChildItem also has a -Recurse option so you can also do it for the entire tree. – Mendhak Jun 13 '20 at 09:49
9

To do a kind of unix touch in powershell on all files :

(Get-ChildItem -Path . –File –Recurse) | % {$_.LastWriteTime = (Get-Date)}

or all files and folders:

(Get-ChildItem -Path . –Recurse) | % {$_.LastWriteTime = (Get-Date)}
Philippe
  • 195
0

get-childitem d: \ * -recurse | % {$_.LastWriteTime = (Get-Date)}

This works for all files and folders in a tree.