删除子目录中的文件(不包括根目录)

删除子目录中的文件(不包括根目录)

我编写了一个 Powershell 脚本,用于删除子目录中超过 25 天的文件。

#
# Variables.
#
$days = 25
$src = "C:\Users\ArifSohM\Desktop\TestFolder\"

# Check if files are older than 25 days.

Get-childitem -path $src |
ForEach-Object {
    $age = New-Timespan ($_.LastWriteTime) $(get-date)

    if($age.days -gt $days) {
    Remove-Item $_.FullName -force
    Write-host "$_ is older than 25 days and has been deleted." -ForegroundColor yellow
    }
}
#

这部分工作正常,但当我运行此命令时,它还会删除根目录中的文件。这是我的文件夹结构:

  • 测试文件夹(根目录)
    • 目录1(文件夹)
      • 文件1
      • 文件2
    • 目录2(文件夹)
      • 文件1
      • 文件2
    • 文件1
    • 文件2

因此,我想删除Directory1&中的所有内容Directory2,但不删除 中的所有Test Folder内容。可以这样做吗?

答案1

Get-ChildItem -Directory这可以通过使用仅选择目录并循环浏览它们来实现(除其他方法外) 。

请注意,your/my 函数不会处理子文件夹中的子文件夹。这只是对原始脚本的简单调整。

$days = 25
$src = "C:\Users\ArifSohM\Desktop\TestFolder\"

# Check if files are older than 25 days.

$dirs = Get-childitem -path $src* -Directory 

foreach ($dir in $dirs) {
    Get-childitem -path $dir | ForEach-Object {
        $age = New-Timespan ($_.LastWriteTime) $(get-date)

        if($age.days -gt $days) {
        Remove-Item $_.FullName -force
        Write-host "$_ is older than 25 days and has been deleted." -ForegroundColor yellow
        }
    }
}

相关内容