仅当文件夹具有特定文件类型时归档文件夹

时间:2016-06-07 18:43:30

标签: powershell

仅当文件夹包含特定类型的文件(例如.txt.csv.xls.xlsx时,如何编写PowerShell脚本才能归档文件夹。我的源路径为C:\Temp\Test\,共有5个子文件夹:

  • foldera
  • FolderB中
  • folderc
  • folderd
  • foldere
  • 存档

只有folderafolderbfolderc包含要归档的文件,归档路径为C:\Temp\Test\Archivefolders folderafolderb因此无需创建这些文件夹,但需要压缩和复制文件,需要创建folderc并且必须压缩和复制文件。

使用下面的代码我得到文件,但不是特定文件所在的文件夹。

    $ignorefolders = @(
    "C:\Temp\misc"   
    )

$archive = "C:\Temp\Archive" 

[regex]$exclude = ‘(?i)^(‘ + (($ignorefolders |foreach {[regex]::escape($_)}) –join “|”) + ‘)’

$includefiletype = @("*.txt", "*.csv", "*.dat", "*.xls", "*.xlsx")     
$workingDir = "C:\Temp"

Get-ChildItem $workingDir -recurse -include $fileFilter | Where {$_.FullName -notmatch $exclude} | Copy-Item -Destination $archive

1 个答案:

答案 0 :(得分:0)

要获取目录,请选择从FileInfo返回的Get-ChildItem个对象的目录属性,我还假设您不想要任何重复项,因此,您&# 39;我必须使用sort过滤掉那些:

Get-ChildItem -Recurse -Path $source -include*.txt,*.csv,*.xls,*.xlsx | select directory | sort -Unique -Property Directory | Select -expand Directory | Copy-Item -Destination $archive -WhatIf