ファイルとフォルダーの PowerShell ループ
-
PowerShell
Get-ChildItem
を使用してファイルとフォルダーをループする -
PowerShell
Get-ChildItem
とForEach
を使用してファイルとフォルダーをループする
この記事では、ファイルとフォルダーをループする PowerShell スクリプトを作成する方法について説明します。 Get-ChildItem
および ForEach
ステートメントを使用して、さまざまな PowerShell スクリプトを作成します。 すぐに飛び込みましょう。
PowerShell Get-ChildItem
を使用してファイルとフォルダーをループする
PowerShell Get-ChildItem
コマンドレットを使用して、指定した場所にあるファイルとフォルダーの一覧を表示します。 -path
属性を使用して、目的のディレクトリへのパスを指定します。
Get-ChildItem
も gci
をエイリアスとして使用します。
たとえば、C:/
ドライブ内のファイルとフォルダーのリストを取得する場合は、次のコマンドを実行できます。
Get-ChildItem -Path 'C:\'
上記のコマンドは、ドライブのルートにあるファイルとフォルダーのみを表示します。 子ディレクトリ (サブフォルダー) の内容を取得するには、以下に示すように -Recurse
パラメーターを追加します。
Get-ChildItem -Path 'C:\' -Recurse
PowerShell は、ドライブにあるすべてのサブフォルダーの内容を表示します。
PowerShell Get-ChildItem
と ForEach
を使用してファイルとフォルダーをループする
PowerShell ForEach
ループを使用して、オブジェクトのコレクション内の各オブジェクトとして機能します。 Get-ChildItem
コマンドレットと ForEach
ループを使用する場合の一般的な構造は次のとおりです。
Get-ChildItem –Path "C:\" |
Foreach-Object {
#Some action with $_.FullName
}
2つの PowerShell ユーティリティを使用したスクリプトの例をいくつか見てみましょう。
C:\Users\pc
フォルダー内のすべての .csv
ファイルを削除するとします。 これについてどうすればよいでしょうか?
以下に示すように、Get-ChildItem
コマンドレットと ForEach
ループを使用してこのタスクを実行できます。
Get-ChildItem –Path "C:\Users\pc" -Recurse -Filter *.csv
|
Foreach-Object {
Remove-Item $_.FullName -WhatIF
}
上記のスクリプトは、PowerShell Get-ChildItem
コマンドレットと -Recurse
パラメーターを使用して、C:\Users\pc
フォルダー内のすべてのファイルを取得します。 次に、Filter
パラメータを使用して、.csv
ファイル拡張子のみを持つファイルをフェッチします。
結果を ForEach
ループにパイプして、ファイルを削除します。 ただし、ファイルを削除したくないので、-WhatIf
パラメータを追加しました。 以下は、上記のスクリプトの出力です。
私たちのスクリプトは、.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-ChildItem
は、pc
フォルダー内のすべてのファイルをフェッチし、それらを ForEach
ループに渡します。 ループは、7 日より古いすべてのファイルを削除します。
フォルダー内のファイルを削除したくないので、-WhatIf
パラメーターを追加しました。
結論として、PowerShell Get-ChildItem
と ForEach
ループを使用して、ファイルとフォルダーをループするスクリプトを作成できます。
ForEach
ループは、Get-ChildItem
コマンドレットから渡されたすべてのファイルに対して、指定されたアクションを実行します。 2つの PowerShell ユーティリティを使用するには、さまざまな方法があります。
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