将当前时间分配给powershell变量
我拼凑了一个PowerShell脚本,每次计算机重新启动时都会触发它(通过任务调度器) 脚本将执行以下操作:将当前时间分配给powershell变量,powershell,Powershell,我拼凑了一个PowerShell脚本,每次计算机重新启动时都会触发它(通过任务调度器) 脚本将执行以下操作: 查找位于特定目录中的csv文件 通过在文件末尾附加时间/日期戳重命名文件 将该文件移动到存档文件夹中 在白天,软件应用程序会自动创建一个新的csv文件。因此,下次计算机重新启动时,它会重复上述步骤 最后一步-脚本还会查看归档文件夹,并删除所有大于7天的文件 有时(并非所有时间),当计算机重新启动并运行脚本时,它会完成步骤1和2,但不会完成步骤3。 这意味着csv文件被重命名,但脚本没有将
$source = "C:\Logs"
$destination = "C:\Logs\archive"
$old = 7
$rightNow = Get-Date
# delete all files in the archive folder that are > 7 days old
Get-ChildItem $destination -Recurse |
Where-Object {-not $_.PSIsContainer -and
$rightNow.Subtract($_.CreationTime).Days -gt $old } |
Remove-Item
# rename all csv files in the Log folder by appending currentDate_currentTime
Get-ChildItem -Path $source\* -Include *.csv | % {
$name = $_.Name.Split(".")[0] + "_" + ($_.CreationTime | Get-Date -Format yyyyMMdd) + "_" + ($_.CreationTime | Get-Date -Format hhmmss) + ".csv"
Rename-Item $_ -NewName $name
Move-Item "$($_.Directory)\$name" -Destination $destination
}
重命名中不使用当前日期,而是使用文件的
CreationTime
属性。如果需要当前日期时间,请尝试
$name = $_.BaseName + [datetime]::now.ToString('_yyyyMMdd_hhmmss') + $_.Extension
或者更好的做法是在移动过程中执行重命名
$source = "C:\Logs"
$destination = "C:\Logs\archive"
$old = 7
# delete all files in the archive folder that are > 7 days old
Get-ChildItem $destination -Recurse -File |
Where-Object { $_.CreationTime -lt [datetime]::Today.AddDays(-$old) } |
Remove-Item
# rename all csv files in the Log folder by appending currentDate_currentTime
Get-ChildItem -Path $source\* -Include *.csv | % {
$_ | Move-Item -Dest $("$destination\" + $_.BaseName + [datetime]::now.ToString('_yyyyMMdd_hhmmss') + $_.Extension)
}
$rightNow=获取日期-格式为“\u yyyyMMdd\u hhmmss”