gpt4 book ai didi

powershell - 如何在PowerShell中解析日期?

转载 作者:行者123 更新时间:2023-12-04 10:41:34 25 4
gpt4 key购买 nike

我编写了一个脚本,该脚本删除了五天以上的备份。我通过目录名而不是实际日期来检查它。

如何将目录名称解析为日期以进行比较?

我的脚本的一部分:

...

foreach ($myDir in $myDirs)
{
$dirName=[datetime]::Parse($myDir.Name)
$dirName= '{0:dd-MM-yyyy}' -f $dirName
if ($dirName -le "$myDate")
{
remove-item $myPath\$dirName -recurse
}
}
...

也许我做错了,因为它仍然无法删除上个月的目录。

带有Akim建议的整个脚本如下:
Function RemoveOldBackup([string]$myPath)
{

$myDirs = Get-ChildItem $myPath

if (Test-Path $myPath)
{
foreach ($myDir in $myDirs)
{
#variable for directory date
[datetime]$dirDate = New-Object DateTime

#check that directory name could be parsed to DateTime
if([datetime]::TryParse($myDir.Name, [ref]$dirDate))
{
#check that directory is 5 or more day old
if (([DateTime]::Today - $dirDate).TotalDays -ge 5)
{
remove-item $myPath\$myDir -recurse
}
}
}
}
Else
{
Write-Host "Directory $myPath does not exist!"
}
}

RemoveOldBackup("E:\test")

目录名称例如是09-07-2012、08-07-2012,...,30-06-2012和29-06-2012。

最佳答案

尝试计算[DateTime]::Today与解析目录名称的结果之间的差异:

foreach ($myDir in $myDirs)
{
# Variable for directory date
[datetime]$dirDate = New-Object DateTime

# Check that directory name could be parsed to DateTime
if ([DateTime]::TryParseExact($myDir.Name, "dd-MM-yyyy",
[System.Globalization.CultureInfo]::InvariantCulture,
[System.Globalization.DateTimeStyles]::None,
[ref]$dirDate))
{
# Check that directory is 5 or more day old
if (([DateTime]::Today - $dirDate).TotalDays -ge 5)
{
remove-item $myPath\$dirName -recurse
}
}
}

关于powershell - 如何在PowerShell中解析日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11393366/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com