我這小廢物的powerShell 入門
使用power shell 修改檔案 建立日期、修改日期、存取日期
檔案是同事給我的,我不確定她去哪找的,所以沒有附上來源
有一些些註解,其他不解釋
步驟如下(順序請依照1→3)
2.開CMD 輸入PowerShell 開始PS模式
3.>.\ChangeDate.ps1 -name "修改檔案" -CRdate "建立日期" -UPdate "修改日期"
(因為我有預設,且有做處理若不key -UPdate 則修改日與建立日相同)
1.存檔下列檔案為ChangeDate.ps1
#利用Powershell修正Windows檔案的「建立日期」、「修改日期」、「存取日期」屬性
#Use Powershell to change Windows files CreationTime, LastWriteTime(a.k.a ModifyDate), LastAccessTime date.
# -name FileName
# -date yyyy-MM-dd HH:mm:ss datetime wanna change
param (
[string]$name = "" ,
[string]$CRdate = "",
[string]$UPdate = ""
)
if ([string]::IsNullOrEmpty($name))
{
Write-Host "請指定欲變更「修改日期」的檔案名稱。";
exit;
}
//使用相對路徑,若使用絕對路徑不需要
#$name = "$($PSScriptRoot)\$($name)";
#下方為確認欲修改的目錄是否存在
if (!([System.IO.Directory]::Exists($name)))
{
#下方為確認欲修改的檔案是否存在,因為我要設定目錄也要設定檔案所以都留
if (!([System.IO.File]::Exists($name)))
{
Write-Host "指定的檔案不存在。";
exit;
}
}
[DateTime]$newDate = New-Object DateTime;
if ([string]::IsNullOrEmpty($CRdate))
{
$newDate = (Get-Date);
Write-Host "$($CRdate)日期格式不正確。";
}
else
{
if (!([DateTime]::TryParseExact(
$CRdate,
"yyyy-MM-dd HH:mm:ss",
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::None,
[ref]$newDate)
))
{
Write-Host "欲變更的CR日期格式不正確。";
exit;
}
}
[DateTime]$newUPDate = New-Object DateTime;
if ([string]::IsNullOrEmpty($UPdate))
{
$newUPDate = (Get-Date);
Write-Host "$($UPdate)日期格式不正確。";
if (!([DateTime]::TryParseExact(
$CRdate,
"yyyy-MM-dd HH:mm:ss",
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::None,
[ref]$newUPDate)
))
{
Write-Host "欲變更的UP日期格式不正確。";
exit;
}
}
else
{
if (!([DateTime]::TryParseExact(
$UPdate,
"yyyy-MM-dd HH:mm:ss",
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::None,
[ref]$newUPDate)
))
{
Write-Host "欲變更的UP日期格式不正確。";
exit;
}
}
#變更檔案之「修改日期」屬性
$file = Get-Item $name;
$file.CreationTime = $newDate; #建立日期
$file.LastWriteTime = $newUPDate; #修改日期
#$file.LastAccessTime = $newDate; #存取日期
Write-Host "成功將「$($name)」之建立日期變更為「$($newDate)」。";