将要删除的文件夹名称和子文件夹名称写入输出文件
Write folder name and subfolder name being deleted to output file
我写了下面的内容,目的是删除目录中创建日期为 2 天或更长时间的所有文件夹,无论是否成功,都将其记录在输出文件中。
除了文件名不会显示在输出文件中外,脚本按我希望的方式运行。显示的全部是'Deletion of Failed/Successful'
$dump_path = "C:\desktop"
$max_days = "-2"
$curr_date = Get-Date
$del_date = $curr_date.AddDays($max_days)
ForEach-Object {
$filename = $_
Get-ChildItem $statfolder$_ -Recurse | Where-Object {
$_.CreationTime -lt $del_date
} | Remove-Item -Recurse -Force
if ($? -eq $false) {
echo "$Deletion of $filename Failed" |
Out-File -Append C:\Logs\DELETION_FAIL_K_$(Get-Date -Format `"dd-MMM-yyyy`").txt
} else {
Write-Output "Deletion of $filename Successful" |
Out-File -Append C:\Logs\DELETION_SUCCESS_K_$(Get-Date -format `"dd-MMM-yyyy`").txt
}
}
理想情况下,我希望日志仅显示父文件夹名称和下一级子文件夹列表。这可能吗?
例如。日志将显示
Deletion of folder 12-Jan-2017 containing sub folders R2015, R2086 was Successful
如果无法添加下一级的子文件夹,那么下面的就好了:
Deletion of folder 12-Jan-2017 was Successful
您使用 ForEach-Object
的方式永远不会填充当前对象变量 $_
(以及相应的变量 $filename
)。您希望价值从何而来?
将 Get-ChildItem | Where-Object
的输出输入 ForEach-Object
,但首先按全名对结果进行排序,以便嵌套文件夹在其父文件夹之前被删除。
Get-ChildItem $statfolder$_ -Recurse | Where-Object {
$_.PSIsContainer -and
$_.CreationTime -lt $del_date
} | Sort-Object FullName | ForEach-Object {
$folder = $_.FullName
"Deleting folder '$folder'."
Remove-Item $folder -Recurse -Force -WhatIf
}
使用 -WhatIf
开关,您将执行 dry-run,只是回显要删除的内容,而不实际删除它。在您确认一切都会按预期工作后,删除开关和 re-run.
我写了下面的内容,目的是删除目录中创建日期为 2 天或更长时间的所有文件夹,无论是否成功,都将其记录在输出文件中。
除了文件名不会显示在输出文件中外,脚本按我希望的方式运行。显示的全部是'Deletion of Failed/Successful'
$dump_path = "C:\desktop"
$max_days = "-2"
$curr_date = Get-Date
$del_date = $curr_date.AddDays($max_days)
ForEach-Object {
$filename = $_
Get-ChildItem $statfolder$_ -Recurse | Where-Object {
$_.CreationTime -lt $del_date
} | Remove-Item -Recurse -Force
if ($? -eq $false) {
echo "$Deletion of $filename Failed" |
Out-File -Append C:\Logs\DELETION_FAIL_K_$(Get-Date -Format `"dd-MMM-yyyy`").txt
} else {
Write-Output "Deletion of $filename Successful" |
Out-File -Append C:\Logs\DELETION_SUCCESS_K_$(Get-Date -format `"dd-MMM-yyyy`").txt
}
}
理想情况下,我希望日志仅显示父文件夹名称和下一级子文件夹列表。这可能吗?
例如。日志将显示
Deletion of folder 12-Jan-2017 containing sub folders R2015, R2086 was Successful
如果无法添加下一级的子文件夹,那么下面的就好了:
Deletion of folder 12-Jan-2017 was Successful
您使用 ForEach-Object
的方式永远不会填充当前对象变量 $_
(以及相应的变量 $filename
)。您希望价值从何而来?
将 Get-ChildItem | Where-Object
的输出输入 ForEach-Object
,但首先按全名对结果进行排序,以便嵌套文件夹在其父文件夹之前被删除。
Get-ChildItem $statfolder$_ -Recurse | Where-Object {
$_.PSIsContainer -and
$_.CreationTime -lt $del_date
} | Sort-Object FullName | ForEach-Object {
$folder = $_.FullName
"Deleting folder '$folder'."
Remove-Item $folder -Recurse -Force -WhatIf
}
使用 -WhatIf
开关,您将执行 dry-run,只是回显要删除的内容,而不实际删除它。在您确认一切都会按预期工作后,删除开关和 re-run.