PowerShell에서 폴더 제외하고 항목 복사
-
Get-Item
함수와-Exclude
매개변수를 사용한 PowerShell 복사 작업에서 폴더 제외하기 -
Where-Object
와PSIsContainer
를 사용한 PowerShell 복사 작업에서 폴더 제외하기 - 결론

파일 관리 및 자동화를 위한 PowerShell 영역에서 특정 폴더를 제외하면서 파일을 복사하는 작업은 일반적이지만 미묘한 도전 과제입니다. 이 글에서는 Get-Item
함수를 -Exclude
매개변수와 함께 사용하는 방법과 Where-Object
를 PSIsContainer
속성과 결합하여 이 작업을 수행하는 두 가지 효과적인 방법을 다룹니다.
두 방법 모두 같은 목적을 가지고 있지만, 문제에 접근하는 각기 다른 시각과 고유한 장점을 제공합니다.
우리의 목표는 이러한 방법들, 그 적용 및 사용의 미묘함에 대해 종합적인 이해를 제공하는 것입니다. 자세한 설명, 구문 분해 및 실용적인 예제를 통해 PowerShell 사용자들이 파일 복사 작업을 효율적으로 관리할 수 있는 능력을 갖추도록 하고, 그들의 작업 흐름의 특정 요구 사항에 맞게 접근 방식을 맞춤화하도록 돕는 것을 목표로 합니다.
Get-Item
함수와 -Exclude
매개변수를 사용한 PowerShell 복사 작업에서 폴더 제외하기
우리는 PowerShell에서 특정 폴더를 제외하면서 파일을 복사하기 위해 Copy-Item
명령을 사용할 수 있습니다. 폴더를 제외하는 방법은 두 가지가 있으며, 하나는 단일 폴더를 제외하는 것이고, 다른 하나는 여러 폴더를 제외하는 것입니다.
이 작업의 구문은 Copy-Item
과 Get-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
폴더:
출력:
위 명령은 주어진 하나의 폴더만 제외합니다. 여러 폴더를 제외하려면 -Exclude()
에 여러 폴더 이름을 넣기만 하면 됩니다.
여러 폴더를 제외하는 명령을 보십시오:
Copy-Item -Path (Get-Item -Path "origin\*" -Exclude ('SubFolder', 'SubFolder2')).FullName -Destination "destination\" -Recurse -Force
출력 확인:
Where-Object
와 PSIsContainer
를 사용한 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
매개변수의 세심한 조정을 통해 달성되며, 실제 폴더를 제외하면서 파일 구조의 무결성을 유지할 수 있도록 합니다.
출력:
결론
결론적으로, 이 글에서 제시된 기술들 — Get-Item
과 -Exclude
, Where-Object
와 PSIsContainer
사용하기 — 은 PowerShell 복사 작업 중 폴더를 제외하는 강력하고 유연한 방법을 제공합니다. 이러한 방법을 이해하고 적용함으로써 사용자는 PowerShell에서 파일 관리 및 자동화 능력을 상당히 향상시킬 수 있습니다.
Get-Item
및 -Exclude
접근 방식은 특정 폴더를 제외하는 데 간단하고 매우 효과적이며, 반면 Where-Object
및 PSIsContainer
방법은 더 미묘한 제어를 제공합니다. 이는 제외 기준이 더 복잡하거나 동적인 상황에서 특히 유용합니다. 두 방법 모두 PowerShell이 파일 및 디렉터리를 처리하는 데 있어 그 유연성과 강력함을 보여주며, 시스템 관리자, 개발자 및 IT 전문가에게 매우 중요한 도구가 됩니다.
이 지식을 활용하여 사용자는 다양한 파일 복사 작업을 자신 있게 처리할 수 있으며, Windows 환경에서 파일 관리 작업에 대해 효율적이고 정확한 제어를 보장합니다.
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