我愿意通过排除一些在复制时导致错误的项目,从一个目录递归复制到另一个目录。
当我只有#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
答案 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'