파일 및 폴더를 통한 PowerShell 루프

John Wachira 2024년2월15일
  1. PowerShell Get-ChildItem을 사용하여 파일 및 폴더 반복
  2. PowerShell Get-ChildItemForEach를 사용하여 파일 및 폴더를 반복합니다.
파일 및 폴더를 통한 PowerShell 루프

이 문서에서는 파일 및 폴더를 반복하는 PowerShell 스크립트를 작성하는 방법을 보여줍니다. Get-ChildItemForEach 문을 사용하여 다양한 PowerShell 스크립트를 생성합니다. 바로 뛰어들자.

PowerShell Get-ChildItem을 사용하여 파일 및 폴더 반복

PowerShell Get-ChildItem cmdlet을 사용하여 지정된 위치에 파일 및 폴더 목록을 표시합니다. -path 속성을 사용하여 원하는 디렉토리의 경로를 지정합니다.

Get-ChildItemgci를 별칭으로 사용합니다.

예를 들어 C:/ 드라이브에 있는 파일 및 폴더 목록을 얻으려면 다음을 실행할 수 있습니다.

Get-ChildItem -Path 'C:\'

위의 명령은 드라이브의 루트에 있는 파일과 폴더만 표시합니다. 하위 디렉토리(하위 폴더)의 내용을 가져오려면 아래 그림과 같이 -Recurse 매개변수를 추가할 수 있습니다.

Get-ChildItem -Path 'C:\' -Recurse

PowerShell은 드라이브에 있는 모든 하위 폴더의 내용을 표시합니다.

PowerShell Get-ChildItemForEach를 사용하여 파일 및 폴더를 반복합니다.

PowerShell ForEach 루프를 사용하여 개체 컬렉션의 각 개체 역할을 합니다. 다음은 Get-ChildItem cmdlet 및 ForEach 루프를 사용할 때의 일반 구조입니다.

Get-ChildItem Path "C:\" |

Foreach-Object {

#Some action with $_.FullName

}

두 개의 PowerShell 유틸리티를 사용하는 몇 가지 예제 스크립트를 살펴보겠습니다.

C:\Users\pc 폴더에 있는 모든 .csv 파일을 삭제한다고 가정해 보겠습니다. 어떻게 해야 할까요?

아래 그림과 같이 Get-ChildItem cmdlet 및 ForEach 루프를 사용하여 이 작업을 수행할 수 있습니다.

Get-ChildItem Path "C:\Users\pc" -Recurse -Filter *.csv
|
Foreach-Object {
Remove-Item $_.FullName -WhatIF
}

위의 스크립트는 -Recurse 매개 변수와 함께 PowerShell Get-ChildItem cmdlet을 사용하여 C:\Users\pc 폴더의 모든 파일을 가져옵니다. 그런 다음 Filter 매개 변수를 사용하여 .csv 파일 확장명만 있는 파일을 가져옵니다.

파일이 제거되는 ForEach 루프로 결과를 파이프합니다. 그러나 파일을 삭제하고 싶지 않기 때문에 -WhatIf 매개변수를 추가했습니다. 아래는 위 스크립트의 출력입니다.

CSV 파일을 삭제하는 ForEach 루프

스크립트에서 .csv 파일 확장자를 가진 6개의 파일을 찾았습니다. -WhatIf 매개변수를 사용한 이후로 파일이 아직 삭제되지 않았습니다.

특정 날짜보다 오래된 파일을 삭제하는 스크립트를 만들 수도 있습니다. 시스템에서 임시 로그 파일을 정리할 때 유용할 수 있습니다.

다음은 pc 디렉토리에서 7일보다 오래된 파일을 삭제하는 예제 스크립트입니다.

Get-ChildItem C:\Users\pc\ -Recurse
|
Where-Object { $_.CreationTime -lt ($(Get-Date).AddDays(-7))} |
ForEach-Object { remove-Item $_.FullName whatif }

Recurse 매개변수가 있는 이 Get-ChildItempc 폴더의 모든 파일을 가져와서 ForEach 루프로 파이다운합니다. 루프는 7일보다 오래된 모든 파일을 삭제합니다.

폴더에 있는 파일을 없애고 싶지 않기 때문에 -WhatIf 매개변수를 추가했습니다.

결론적으로 PowerShell Get-ChildItemForEach 루프를 사용하여 파일과 폴더를 반복하는 스크립트를 만들 수 있습니다.

ForEach 루프는 Get-ChildItem cmdlet에서 파이프된 모든 파일에 대해 지정된 작업을 수행합니다. 두 가지 PowerShell 유틸리티를 사용할 수 있는 여러 가지 방법이 있습니다.

작가: John Wachira
John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

관련 문장 - PowerShell File