ps/Modules/Cole.PowerShell.Developer/Public/Update-LastModifiedTimestamp.ps1
2023-05-30 22:51:22 -07:00

66 lines
2.4 KiB
PowerShell

function Update-LastModifiedTimestamp {
<#
.SYNOPSIS
This file replicates the familiar bash "touch" command, and is aliased as such.
If the filename present does not exist, it will create the file specified.
If the file already exists, it will update the last-modified time on the file to the current time.
.PARAMETER Path
[string] The appropriate path
.PARAMETER Timestamp
[System.DateTime] The specific time to set. Defaults to Now.
#>
[CmdletBinding()]
[OutputType([void])]
param (
[Parameter(Mandatory = $true, Position = 0)]
[string]$Path,
[Alias('T')]
[System.DateTime]$Timestamp = [System.DateTime]::Now
)
if (!(Test-Path -Path $Path)) {
New-File -Path $Path
}
(Get-Item -Path $Path).LastWriteTime = $Timestamp
}
Set-Alias -Name touch -Value Update-LastModifiedTimestamp
<#
GNU coreutils touch man page:
Usage: touch [OPTION]... FILE...
Update the access and modification times of each FILE to the current time.
A FILE argument that does not exist is created empty, unless -c or -h
is supplied.
A FILE argument string of - is handled specially and causes touch to
change the times of the file associated with standard output.
Mandatory arguments to long options are mandatory for short options too.
-a change only the access time
-c, --no-create do not create any files
-d, --date=STRING parse STRING and use it instead of current time
-f (ignored)
-h, --no-dereference affect each symbolic link instead of any referenced
file (useful only on systems that can change the
timestamps of a symlink)
-m change only the modification time
-r, --reference=FILE use this file's times instead of current time
-t STAMP use [[CC]YY]MMDDhhmm[.ss] instead of current time
--time=WORD change the specified time:
WORD is access, atime, or use: equivalent to -a
WORD is modify or mtime: equivalent to -m
--help display this help and exit
--version output version information and exit
Note that the -d and -t options accept different time-date formats.
GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
Full documentation <https://www.gnu.org/software/coreutils/touch>
or available locally via: info '(coreutils) touch invocation'
#>