将要删除的文件夹名称和子文件夹名称写入输出文件

时间:2017-01-13 12:50:47

标签: powershell powershell-v2.0

我编写了以下内容,目的是删除目录中创建日期为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日成功

1 个答案:

答案 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开关出现时,您将进行干运行,只是回显将删除的内容而不实际删除它。验证一切都按预期工作后,删除开关并重新运行。