-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDateTamper.ps1
70 lines (63 loc) · 1.92 KB
/
DateTamper.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<#
.Synopsis
A PowerShell Implementation of BulkFileChanger
.DESCRIPTION
A PowerShell Implementation of BulkFileChanger
Created by Achref BEN SAAD
Inspired from : https://www.nirsoft.net/utils/bulk_file_changer.html
.EXAMPLE
.\DateTamper -date "1-1-2023 6:00" -ALL
Will Change the LastWriteTime, CreationTime and LastAccesTime of all files and directories in the current position, please note that this function is not recursive
#>
param(
$fileName,
$filesList,
$date = [DateTime]::Today,
[switch]$CreationTime,
[switch]$LastAccessTime,
[switch]$LastWriteTime,
[switch]$ALL
)
function Modify {
param (
[String]$file,
$date,
$CreationTime,
$LastAccessTime,
$LastWriteTime,
$ALL
)
$target = Get-Item $file
if ($ALL) {
$target.CreationTime = $date
$target.LastAccessTime = $date
$target.LastWriteTime = $date
}
if($CreationTime){
$target.CreationTime = $date
}
if ($LastAccessTime) {
$target.LastAccessTime = $date
}
if ($LastWriteTime) {
$target.LastWriteTime = $date
}
}
if ($date.GetType() -ne [DateTime]) {
try {
$date = Get-Date -date $date
}
catch {
Write-Error -Message "Please enter a valid date format"
exit 1
}
}
if($filesList){
Get-Content $filesList | ForEach-Object { Modify -file $_ -date $date -CreationTime $CreationTime -LastAccessTime $LastAccessTime -LastWriteTime $LastWriteTime -ALL $ALL}
}
elseif ($fileName) {
Modify -file $fileName -date $date -CreationTime $CreationTime -LastAccessTime $LastAccessTime -LastWriteTime $LastWriteTime -ALL $ALL
}
else{
Get-ChildItem . | ForEach-Object { Modify -file $_ -date $date -CreationTime $CreationTime -LastAccessTime $LastAccessTime -LastWriteTime $LastWriteTime -ALL $ALL}
}