复制不工作时,Powershell会排除项目

时间:2017-10-24 11:02:43

标签: powershell copy-item

我愿意通过排除一些在复制时导致错误的项目,从一个目录递归复制到另一个目录。

当我只有#34; System Volume ..."它工作正常。和" RECYCLE.BIN" " $ Excluir"中的值变量,但是,现在我需要排除每个以点开头的项目"。"所以我写了你看到的循环,它为$ Excluir变量添加了新的值。

现在" -Exclude"参数忘记排除新值,在这种情况下,这些值是以点"开头的文件和目录的名称。"

对不起,如果我的英语导致混淆。

这是我的代码:

$RutaOrigenFicheros = "E:\"
$RutaTempFicheros = "A:\ENTRADA\TMP\"

$Excluir = @( "System Volume Information","`$RECYCLE.BIN")

$ElementosOcultosUnix = Get-ChildItem $RutaOrigenFicheros -Name -Recurse -Include ".*"

foreach ($i in $ElementosOcultosUnix){
  if ($i -match "\\")
  {
    $elemento = $i -split "\\"
    $n = ($elemento.length) - 1
    $Excluir += $elemento[$n]
  }
  else
  {
    $Excluir += $i
  }
}

Write-Host $Excluir

Copy-Item -Path $RutaOrigenFicheros* -Destination $RutaTempFicheros -Recurse -Force -Exclude $Excluir -ErrorAction Stop

1 个答案:

答案 0 :(得分:0)

你的逻辑不是很清楚(或者没有意义)。以下是我认为您尝试使用代码完成的任务:

$Destination='A:\Temp\'

$Exclude = Get-ChildItem -Path 'E:\' -Recurse -Force |
  Where-Object { $_.FullName -like '*System Volume Information*' -or
                 $_.FullName -like '*$RECYCLE.BIN*' -or
                 $_.FullName -like '*\.*' }

Write-Host $Exclude.FullName

Copy-Item -Path 'E:\*' -Destination $Destination -Recurse -Force -Exclude $Exclude.FullName -ErrorAction 'Stop'