2017-10-24 4 views
1

복사 할 경우 오류가 발생하는 일부 항목을 제외하여 한 디렉터리에서 다른 디렉터리로 재귀 적으로 복사하려고합니다.Powershell이 ​​복사 할 때 항목을 제외합니다.

"$ Excluir"변수에는 "System Volume ..."및 "RECYCLE.BIN"값만 있었지만 지금은 점으로 시작하는 모든 항목을 제외해야합니다. " " 그래서 $ 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

파일 만 복사하거나 디렉토리가 포함되어 있습니까? – TheIncorrigible1

+0

재귀 적이기 때문에 둘 다 – tributoo2

+0

나는 의도를 더 묻고있었습니다. 따라서 마침표로 시작하는 것을 제외하고 모든 파일/폴더를 원하거나 예에서 두 개의 명명 된 파일 (시스템 볼륨 정보 및 $ RECYCLE.BIN? – TheIncorrigible1

답변

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' 
+0

내 논리가 명확하지 않다는 것은 무엇을 의미합니까? 나는 Powershell 프로그래밍에 익숙하지 않지만 내 코드는 꽤 이해할 만하다. 어쨌든 당신의 도움에 감사드립니다. – tributoo2

+0

나는 당신의 코드와 나던 일을 테스트했다. 제외하지 않았다. 어쩌면 나는 잘못 설명했다. 나는 NTFS 파일 시스템에 의해 생성 된 시스템 볼륨 정보와 RECYCLE.BIN 디렉토리를 제외시켜야하고, "가능한"파일이나 디렉토리를 제외해야합니다. – tributoo2

+0

예를 들어, 루프 후 my $ Excluir 변수 최종 값은 어레이로 다음 값을 갖습니다. 시스템 볼륨 정보, $ RECYCLE.BIN, .file1.txt, .file2.txt, .dir1 – tributoo2

관련 문제