HOWTO · PowerShell

PowerShell에서 폴더 제외하고 항목 복사

이 튜토리얼은 PowerShell에서 폴더를 제외하고 항목을 복사하는 방법을 보여줍니다.

파일 관리 및 자동화를 위한 PowerShell 영역에서 특정 폴더를 제외하면서 파일을 복사하는 작업은 일반적이지만 미묘한 도전 과제입니다. 이 글에서는 Get-Item 함수를 -Exclude 매개변수와 함께 사용하는 방법과 Where-ObjectPSIsContainer 속성과 결합하여 이 작업을 수행하는 두 가지 효과적인 방법을 다룹니다.

두 방법 모두 같은 목적을 가지고 있지만, 문제에 접근하는 각기 다른 시각과 고유한 장점을 제공합니다.

우리의 목표는 이러한 방법들, 그 적용 및 사용의 미묘함에 대해 종합적인 이해를 제공하는 것입니다. 자세한 설명, 구문 분해 및 실용적인 예제를 통해 PowerShell 사용자들이 파일 복사 작업을 효율적으로 관리할 수 있는 능력을 갖추도록 하고, 그들의 작업 흐름의 특정 요구 사항에 맞게 접근 방식을 맞춤화하도록 돕는 것을 목표로 합니다.

Get-Item 함수와 -Exclude 매개변수를 사용한 PowerShell 복사 작업에서 폴더 제외하기

우리는 PowerShell에서 특정 폴더를 제외하면서 파일을 복사하기 위해 Copy-Item 명령을 사용할 수 있습니다. 폴더를 제외하는 방법은 두 가지가 있으며, 하나는 단일 폴더를 제외하는 것이고, 다른 하나는 여러 폴더를 제외하는 것입니다.

이 작업의 구문은 Copy-ItemGet-Item -Exclude를 결합합니다:

Copy-Item -Path (Get-Item -Path "sourcePath\*" -Exclude ('folderToExclude')).FullName -Destination "destinationPath" -Recurse -Force

매개변수:

  • Copy-Item: 이 cmdlet은 파일과 디렉터리를 새 위치로 복사합니다.
  • -Path: 복사할 항목의 경로를 지정합니다. 이 경우 Get-Item에 의해 제공됩니다.
  • Get-Item: 지정된 위치에서 항목을 검색합니다.
  • -Exclude: 이 매개변수는 Get-Item에서 항목을 필터링하며, 특히 제외할 폴더나 파일의 이름을 필터링합니다.
  • ('folderToExclude'): 제외할 폴더 이름입니다.
  • .FullName: 항목의 전체 경로를 검색합니다.
  • -Destination: 항목을 복사할 경로입니다.
  • -Recurse: 하위 디렉터리의 내용을 포함합니다.
  • -Force: 사용자 확인 없이 명령이 실행되도록 강제합니다.

코드 예제:

Copy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder')).FullName -Destination "destination\" -Recurse -Force

우리 스크립트에서는 소스 디렉터리(C:\origin\)를 타겟으로 삼고 Get-Item을 사용하여 해당 디렉터리에 포함된 모든 항목을 검색합니다. 여기서 와일드카드 기호(*)는 디렉터리 내 모든 항목을 나타내는 역할을 합니다.

그런 다음 -Exclude 매개변수를 사용하여 특정 하위 폴더인 SubFolder를 제외하겠다는 의도를 명확히 합니다. .FullName 속성을 사용하는 것은 각각의 항목에 대한 전체 경로를 가져오는 데 중요합니다.

지정된 폴더를 명확히 제외하는 이 목록을 만든 후, 이를 Copy-Item으로 넘깁니다. 대상 위치를 목적지 디렉터리(C:\destination)로 정의합니다. 복사 프로세스가 누락된 하위 디렉터리를 제외하고 모든 하위 디렉터리를 포함하도록 하기 위해 -Recurse 매개변수를 포함합니다.

프로세스를 더욱 원활하게 하고 잠재적인 중단을 방지하기 위해 -Force 매개변수를 사용합니다. 이는 목적지 디렉터리에서 기존 파일을 덮어쓸 때 발생할 수 있는 시스템 프롬프트를 효과적으로 억제합니다.

origin 폴더:

파워셸 copy-item 제외 폴더 - 소스 파일

출력:

파워셸 copy-item 폴더 제외 - 출력

위 명령은 주어진 하나의 폴더만 제외합니다. 여러 폴더를 제외하려면 -Exclude()에 여러 폴더 이름을 넣기만 하면 됩니다.

여러 폴더를 제외하는 명령을 보십시오:

Copy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder', 'SubFolder2')).FullName -Destination "destination\" -Recurse -Force

출력 확인:

파워셸 copy-item 제외 폴더 - 출력

Where-ObjectPSIsContainer를 사용한 PowerShell 복사 작업에서 폴더 제외하기

PowerShell은 파일 및 폴더 조작을 위한 광범위한 cmdlet 세트를 제공하며, Copy-Item은 복사 작업의 주요 역할을 합니다. 그러나 기본 기능으로는 폴더 제외를 직접 지원하지 않습니다.

이를 달성하기 위해 Get-ChildItem, Where-Object, 및 PSIsContainer 속성을 결합하여 사용합니다. 이 방법은 파일을 보존하면서 디렉터리를 제외해야 하는 복사 작업에 특히 유용합니다.

스크립트 구조는 다음과 같습니다:

Get-ChildItem -Path "sourcePath\" -Recurse | Where-Object { $_.PSIsContainer -notmatch 'True' } | Copy-Item -Destination "destinationPath" -Recurse -Container

매개변수:

  • Get-ChildItem -Path "sourcePath\" -Recurse: 지정된 경로에서 모든 항목(파일 및 폴더)을 검색하며 하위 디렉터리를 포함합니다.
  • Where-Object { $_.PSIsContainer -notmatch 'True' }: 모든 디렉터리를 필터링합니다. PSIsContainer는 디렉터리에 대해 True이고 파일에 대해 False인 불리언 속성입니다.
  • Copy-Item -Destination "destinationPath" -Recurse -Container: 나머지 항목(파일)을 목적지로 복사합니다. -Recurse는 하위 디렉터리 탐색을 보장하고 -Container는 디렉터리 구조를 보존합니다.

코드 예제:

Get-ChildItem -Path "origin\" -Recurse | Where-Object { $_.PSIsContainer -notmatch 'True' } | Copy-Item -Destination "destination\" -Recurse -Container

우리 스크립트에서는 소스 디렉터리(origin\)에서 모든 항목을 수집하는 것으로 시작합니다. 이를 위해 Get-ChildItem cmdlet을 사용합니다.

실제 마법은 Where-Object cmdlet에서 발생하는데, 여기서 우리는 디렉터리를 특정적으로 제외하는 필터를 도입합니다. 이 제외는 $_ .PSIsContainer -notmatch 'True' 조건을 기반으로 합니다.

이 특정 코드 조각은 수집된 항목을 효과적으로 걸러내어 파일만(디렉터리가 아닌) 파이프라인으로 전달되도록 하며, 이는 매우 중요합니다.

다음으로 이 필터링된 파일들은 Copy-Item cmdlet으로 전달됩니다. 여기서 우리는 이러한 파일을 지정된 목적지(destination\)로 복사하는 명령을 내립니다.

이 작업의 중요한 측면은 폴더를 제외하면서도 목적지에서 원래 디렉터리 구조를 어떻게 보존하는가입니다. 이는 Copy-Item-Recurse-Container 매개변수의 세심한 조정을 통해 달성되며, 실제 폴더를 제외하면서 파일 구조의 무결성을 유지할 수 있도록 합니다.

출력:

{CODE_BLOCK_8}
파워셸 복사-항목 제외 폴더 - 출력

결론

결론적으로, 이 글에서 제시된 기술들 — Get-Item-Exclude, Where-ObjectPSIsContainer 사용하기 — 은 PowerShell 복사 작업 중 폴더를 제외하는 강력하고 유연한 방법을 제공합니다. 이러한 방법을 이해하고 적용함으로써 사용자는 PowerShell에서 파일 관리 및 자동화 능력을 상당히 향상시킬 수 있습니다.

Get-Item-Exclude 접근 방식은 특정 폴더를 제외하는 데 간단하고 매우 효과적이며, 반면 Where-ObjectPSIsContainer 방법은 더 미묘한 제어를 제공합니다. 이는 제외 기준이 더 복잡하거나 동적인 상황에서 특히 유용합니다. 두 방법 모두 PowerShell이 파일 및 디렉터리를 처리하는 데 있어 그 유연성과 강력함을 보여주며, 시스템 관리자, 개발자 및 IT 전문가에게 매우 중요한 도구가 됩니다.

이 지식을 활용하여 사용자는 다양한 파일 복사 작업을 자신 있게 처리할 수 있으며, Windows 환경에서 파일 관리 작업에 대해 효율적이고 정확한 제어를 보장합니다.