Powershell 如何从删除过程中排除文件夹

维卡斯

我有一个 PowerShell 脚本,用于从根文件夹及其子文件夹中删除超过 x 天的 Windows 计算机中的所有类型的文件。这工作正常,但是现在我想从删除过程中排除 2 个子文件夹。尝试过排除命令,但由于我不熟悉 Powershell,我正在努力使其正确。

PowerShell version: 5.1

文件夹结构(想从删除过程中排除 SubDir 2 和 SubDir3)

MainDir
     |
  SubDir1 -> Folder1 -> Folder2 -> Zip/CSV files 
  SubDir2 -> Folder1 ->.txt files
               |
              Folder2 -> .txt files
  SubDir3 -> Zip files
  SubDir4 -> Folder1 -> zip/csv files

脚本:

param([string] $dir = "C:\MainDir", 
      [string] $days = "15")
      $error.clear()
      try
      {


     $refDate = (Get-Date).AddDays(-$days)
    Get-ChildItem -Path $dir -Recurse | 
    Where-Object { !$_.PSIsContainer -and  $_.LastWriteTime -lt $refDate } | 
    Remove-Item -Force

    }


    catch  {

  Write-Error  $_

  }

  if (!$error) {
Write-Host  'Data deleted for files which are older than' $days 'Days'
}
跟随

由于您使用的是 PS 5.1,您可以使用-Fileswitch 而不必!$_.PSIsContainer在 Where 子句中使用。

要排除子文件夹,您可以尝试以下代码:

$refDate = (Get-Date).AddDays(-$days).Date  # set to midnight
$excludeFolders = 'SubDir2', 'SubDir3'      # an array of folder names to exclude

# create a regex of the folders to exclude
# each folder will be Regex Escaped and joined together with the OR symbol '|'
$notThese = ($excludeFolders | ForEach-Object { [Regex]::Escape($_) }) -join '|'

Get-ChildItem -Path $dir -Recurse -File | 
Where-Object { $_.DirectoryName -notmatch $notThese -and $_.LastWriteTime -lt $refDate } | 
Remove-Item -Force

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Powershell-在Get-ChildItem中排除文件夹

如何从PowerShell中的Get-ChildItem中排除文件和文件夹?

如何从Powershell中删除文件夹?

如何在Powershell中删除文件夹?

如何在Powershell中删除当前文件夹?

使用Powershell对文件进行计数,但在计数和OCR扩展名中排除子文件夹

使用PowerShell删除文件夹的内容

用于删除文件夹的Powershell脚本

Powershell如何复制整个文件夹结构,但排除一个文件夹及其内容

Powershell:使用-notmatch语句排除多个文件夹

如何在Powershell中排除所选文件的列表

如何使用Powershell从文件夹的根目录中仅删除子文件夹和子文件夹的内容,而不删除单个文件

Powershell命令删除子文件夹而不删除根

如何使用PowerShell从文件夹和所有子文件夹中删除所有访问规则?

Powershell 根据日期范围条件删除文件夹文件

PowerShell脚本从隐藏文件夹中删除文件

PowerShell获取文件夹的已删除文件

删除不在Powershell文件夹中的重复文件

PowerShell:DEL命令删除子文件夹中的文件

如何从 rsync 中排除文件夹

如何从rsync中排除文件夹

如何从tslint中排除文件夹?

Powershell,删除与.zip相同名称的文件夹

使用Powershell删除SSISDB目录中的SSIS文件夹

PowerShell/Batch 从文件夹名称中删除结束文本

Powershell:Dir / s-删除重复的文件夹

如何递归删除PowerShell中的所有空文件夹?

如何使用Powershell删除具有特定名称的所有文件夹

Powershell强制停止后如何删除我的临时文件夹