Windows に標準搭載されている、マイクロソフトが開発した .NET フレームワークが利用できるオブジェクト指向のコマンドラインインタプリタ (CLI) PowerShell で、フォルダ内の全ての拡張子を列挙するプログラム例とその実行結果について紹介します。
パート3では、拡張子の列挙の処理に、隠しフォルダを対象に含むかどうかを指定できる -Force オプション(switch パラメータ)について紹介します。
※ Windows PowerShell 5.1.19041.5965 を使用します。
※プログラムは自己責任でご利用ください。
前回の記事
前回パート2では、パート1で実行した、フォルダ内の全ての拡張子を列挙するプログラムのパイプでつながった各コマンドレットとオプション(パラメータ)の処理内容を紹介しました。
-Force をつけないと .git のような隠しフォルダは無視されます
ファイルの一覧の情報を再帰的に取得する Get-ChildItem -File -Recurse では、.git などの隠しフォルダは除外されます。
Get-ChildItem コマンドレットについては、パート2を参照してください。
Get-ChildItem -File でファイル情報を取得する際に、隠しフォルダを含める場合は -Force オプション(switch パラメータ)を使用します。
-Force
非表示ファイルやシステム ファイルなど、ユーザーがアクセスできない項目をコマンドレットが取得できるようにします。 Force パラメーターは、セキュリティ制限をオーバーライドしません。 実装はプロバイダーによって異なります。 詳細については、about_Providersを参照してください。
Get-ChildItem (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn
-Force オプションを使用しない場合は、隠しフォルダは対象外なので、.git 隠しフォルダにだけ存在する sample 拡張子は、表示されません。
例えば、以下のプログラムを、 .git フォルダのあるサンプルフォルダをカレントディレクトリにした powershell アプリに貼り付けて Enter キーを押して実行してみましょう。
※ Windows 10 の場合は、エクスプローラでサンプルフォルダを開いて、アドレスバーに powershell⏎ と入力すると、そのフォルダをカレントディレクトリにして powershell アプリが起動します。
Get-ChildItem -Recurse -File |
Where-Object { $_.Extension -ne "" } |
Select-Object -ExpandProperty Extension |
ForEach-Object { $_.TrimStart('.') } |
Sort-Object -Unique
上記のプログラムでは、Git の .git のような隠しフォルダは無視されるため、.git/hooks/ の ~.sample という隠しフォルダ内だけにある sample 拡張子は表示されません。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS G:\Dev\PowerShell\Enumerate-Extensions\TestFolder2> Get-ChildItem -Recurse -File |
>> Where-Object { $_.Extension -ne "" } |
>> Select-Object -ExpandProperty Extension |
>> ForEach-Object { $_.TrimStart('.') } |
>> Sort-Object -Unique
csv
md
png
txt
PS G:\Dev\PowerShell\Enumerate-Extensions\TestFolder2>
-Force オプションをつけると隠しフォルダも処理に含まれます
.git などの隠しフォルダも処理に含める場合は、全てのファイルの情報を1つずつ次の処理に渡す Get-ChildItem コマンドレットで -Force オプション( switch パラメータ)を指定します。
Get-ChildItem -Recurse -File -Force |
Where-Object { $_.Extension -ne "" } |
Select-Object -ExpandProperty Extension |
ForEach-Object { $_.TrimStart('.') } |
Sort-Object -Unique
上記のプログラムを、先ほどと同様に powershell に貼り付けて実行すると、-Force オプション(switch パラメータ)により隠しフォルダも処理に含まれたため、 .git 隠しフォルダ内だけにある sample という拡張子も表示されるようになりました。

Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
新しいクロスプラットフォームの PowerShell をお試しください https://aka.ms/pscore6
PS G:\Dev\PowerShell\Enumerate-Extensions\TestFolder2> Get-ChildItem -Recurse -File -Force |
>> Where-Object { $_.Extension -ne "" } |
>> Select-Object -ExpandProperty Extension |
>> ForEach-Object { $_.TrimStart('.') } |
>> Sort-Object -Unique
csv
md
png
sample
txt
PS G:\Dev\PowerShell\Enumerate-Extensions\TestFolder2>
今回はここまで
次回は、拡張子の列挙の処理で、正規表現を用いて指定したフォルダとその中にある項目を除外するプログラム例を紹介します。
参照サイト Thank You!
- PowerShell とは – PowerShell | Microsoft Learn
- Get-ChildItem (Microsoft.PowerShell.Management) – PowerShell | Microsoft Learn
- about_Automatic_Variables – PowerShell | Microsoft Learn
- Where-Object (Microsoft.PowerShell.Core) – PowerShell | Microsoft Learn
- Select-Object (Microsoft.PowerShell.Utility) – PowerShell | Microsoft Learn
- about_Pipelines – PowerShell | Microsoft Learn
- PowerShell – Wikipedia
- Git
記事一覧 → Compota-Soft-Press
コメント