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

  1. Get-Item 함수와 -Exclude 매개변수를 사용한 PowerShell 복사 작업에서 폴더 제외하기
  2. Where-ObjectPSIsContainer를 사용한 PowerShell 복사 작업에서 폴더 제외하기
  3. 결론
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 환경에서 파일 관리 작업에 대해 효율적이고 정확한 제어를 보장합니다.

튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - PowerShell Copy