gpt4 book ai didi

powershell - 如何在删除文件之前打印文件的名称/路径?

转载 作者:行者123 更新时间:2023-12-02 23:10:19 25 4
gpt4 key购买 nike

我有一个 Powershell 脚本,可以删除至少 X 天前的文件。我想知道如何在删除之前更改它以打印文件。脚本是

$limit = (Get-Date).AddDays(-45)
$path = "\\noc2-storage\IT_Backup\Daily_SQL\" #"

# Delete files older than the $limit.
echo "Deleting files: "
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force


# Delete any empty directories left behind after deleting the old files.
Get-ChildItem -Path $path -Recurse -Force | Where-Object { $_.PSIsContainer -and (Get-ChildItem -Path $_.FullName -Recurse -Force | Where-Object { !$_.PSIsContainer }) -eq $null } | Remove-Item -Force -Recurse

最佳答案

最简单的方法 - 也是普遍适用的方法 - 是 使用 -Verbose common parameter :

Write-Verbose -Verbose "Deleting files:"
Get-ChildItem -Path $path -Recurse -Force |
Where-Object { ! $_.PSIsContainer -and $_.CreationTime -lt $limit } |
Remove-Item -Force -Verbose

请注意,在 PSv3+ 中,您可以使用 -Files 稍微简化一下。与 Get-ChildItem 切换,它直接将输出限制为仅文件,然后允许简化 Where-Object调用所谓的比较语句:
Write-Verbose -Verbose "Deleting files:"
Get-ChildItem -File -Path $path -Recurse -Force |
Where-Object CreationTime -lt $limit |
Remove-Item -Force -Verbose

如果您只想回显将要删除的内容 - 即 执行试运行 - 使用 -WhatIf常用参数Remove-Item , 而不是 -Verbose .

另请注意,我已替换 echo "Deleting files: "Write-Verbose -Verbose "Deleting files:" .

在 PowerShell 中, echoWrite-Output 的别名,它写入成功流,这是输出数据的目的地。

事实上,写入该流是默认操作,因此您的命令可以简化为:
"Deleting files: "    # implicitly output the string to the success stream

也就是说,上述状态消息不属于成功流,使用单独的流进行详细输出是一种选择。
Write-Verbose -Verbose显式生成如此详细的输出,但通常的机制是让函数/cmdlet 的 -Verbose通用参数或 $VerbosePreference偏好变量驱动是否应显示详细输出。

关于powershell - 如何在删除文件之前打印文件的名称/路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43462123/

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