我编写了以下内容,目的是删除目录中创建日期为2天或更长的所有文件夹,如果成功与否则将其记录在输出文件中。
该脚本按照我的意愿工作,但文件名不会显示在输出文件中。所有显示的内容都是“删除失败/成功”
wget --progress=dot 'URL' 2>&1 | sed -un 's/.* \([0-9]\+\)% .*/\1/p' | whiptail --gauge "Download" 7 50 0
我理想地希望日志显示父文件夹名称和下一级别的子文件夹列表。这可能吗?
EG。日志会读取
删除包含 R2015,R2086 子文件夹 2017年1月12日的文件夹
如果无法添加下一级别的子文件夹,那么只需以下内容就可以了:
删除文件夹 2017年1月12日成功
答案 0 :(得分:0)
您使用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
开关出现时,您将进行干运行,只是回显将删除的内容而不实际删除它。验证一切都按预期工作后,删除开关并重新运行。