programing

Powershell에서 Get-ChildItem -Exclude 매개 변수를 사용하여 디렉터리를 제외할 수 없습니다.

telecom 2023. 8. 28. 20:49
반응형

Powershell에서 Get-ChildItem -Exclude 매개 변수를 사용하여 디렉터리를 제외할 수 없습니다.

Powershell v 2.0을 사용하여 파일과 디렉터리를 한 위치에서 다른 위치로 복사하고 있습니다.파일 형식을 필터링하기 위해 [] 문자열을 사용하고 있으며 디렉터리가 복사되지 않도록 필터링해야 합니다.파일이 올바르게 필터링되고 있지만 필터링하려는 디렉터리obj계속 복사됩니다.

$exclude = @('*.cs', '*.csproj', '*.pdb', 'obj')
    $items = Get-ChildItem $parentPath -Recurse -Exclude $exclude
    foreach($item in $items)
    {
        $target = Join-Path $destinationPath $item.FullName.Substring($parentPath.length)
        if( -not( $item.PSIsContainer -and (Test-Path($target))))
        {
            Copy-Item -Path $item.FullName -Destination $target
        }
    }

여러 가지 방법으로 필터링을 해봤는데,\obj또는*obj*또는\obj\하지만 아무 것도 효과가 없는 것 같습니다.

도움을 주셔서 감사합니다.

-Exclude매개 변수가 꽤 깨졌습니다.사용하지 않을 디렉토리를 필터링하는 것이 좋습니다.Where-Object (?{})예를 들어:

$exclude = @('*.cs', '*.csproj', '*.pdb')
$items = Get-ChildItem $parentPath -Recurse -Exclude $exclude | ?{ $_.fullname -notmatch "\\obj\\?" }

추신: 경고의 말 – 사용할 생각도 하지 마세요.-ExcludeCopy-Item그 자체로

루트 아래에 파일을 나열하는 데 사용하지만 디렉터리는 포함하지 않습니다.

$files = gci 'C:\' -Recurse  | Where-Object{!($_.PSIsContainer)}
Get-ChildItem -Path $SourcePath -File -Recurse | 
Where-Object { !($_.FullName).StartsWith($DestinationPath) } 

언급URL : https://stackoverflow.com/questions/19842754/unable-to-exclude-directory-using-get-childitem-exclude-parameter-in-powershell

반응형