powershell - 如何从不同位置删除超过 X 天的多个文件?

标签 powershell

#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date

#----- define amount of days ----#
$Days = "3"
#----- define folder where files are located ----#
$TargetFolder = "C:\test2"
#----- define extension ----#
$Extension = "*.*"
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)

#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-ChildItem $TargetFolder -Include $Extension -Recurse |
         Where  {$_.LastWriteTime -le "$LastWrite"} 

foreach ($File in $Files) {
    if ($File -ne $NULL) {
        Write-Host "Deleting File $File" -ForegroundColor "Red"
        Remove-Item $File.FullName | Out-Null
    } else {
        Write-Host "No more files to delete!" -foregroundcolor "Green"
    }
}

这是一个很好的 PowerShell 脚本,用于删除早于 X 天的文件,但我们想删除保存在不同位置且每个路径的天数不同的多个文件。

例如,如果我们必须删除超过 3 天的文件,那么我们可以像这个例子一样添加另一个位置:

$TargetFolder = "C:\test","C:\test2" 

它会处理这两个文件夹,但我们想知道是否有办法为不同的文件夹设置不同的天数。

ksh 中,我们曾经在配置文件中这样做:

Location 1;//Server1/c$/processed;14
Location 2;//Server2/backup/;3

最佳答案

使用“年龄”和“位置”等参数调用脚本

Param
(
    [int]$days,
    [string]$Targetfolder
)
#----- define parameters -----#
#----- get current date ----#
$Now = Get-Date

#----- define amount of days ----#
#$Days = '3'
#----- define folder where files are located ----#
#$TargetFolder = 'C:\test2'
#----- define extension ----#
$Extension = '*.*'
#----- define LastWriteTime parameter based on $Days ---#
$LastWrite = $Now.AddDays(-$Days)

#----- get files based on lastwrite filter and specified folder ---#
$Files = Get-Childitem $TargetFolder -Include $Extension -Recurse | Where-Object  {$_.LastWriteTime -le "$LastWrite"} 

foreach ($File in $Files) 
{
    if ($File -ne $NULL)
    {
        write-host "Deleting File $File" -ForegroundColor 'Red'
        Remove-Item $File.FullName | out-null
    }
    else
    {
        Write-Host 'No more files to delete!' -foregroundcolor 'Green'
    }
}

将其保存为 .ps1 并像 MyScript.ps1 -Targetfolder C:\Blah -Days 4 那样调用它。

关于powershell - 如何从不同位置删除超过 X 天的多个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046211/

相关文章:

powershell - Get-Item 因管道关闭错误而失败

PowerShell 从“管理”选项卡更改打印机配置

powershell - Where-Object 不过滤

azure - Powershell - 使用 Connect-AzAccount(使用 MFA)连接到 SQL Server

powershell - 如何从Powershell脚本中使用多个参数执行.Bat

shell - 进行键绑定(bind)以运行上一个或最后一个 shell 命令

sql-server - 使用 powershell 以事务方式创建数据库

powershell - 方法调用失败,因为 [System.IO.FileInfo] 不包含名为 'op_Addition' 的方法

powershell - Cmdkey 密码为空

arrays - Select-Object -Unique返回String而不是String数组