フォルダ内の全てのファイルの拡張子の一覧を表示するバッチファイル例3/4

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 拡張子表示されません

フォルダ内の全てのファイルの拡張子の一覧を表示するバッチファイル例2
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 という拡張子表示されるようになりました。

フォルダ内の全てのファイルの拡張子の一覧を表示するバッチファイル例4
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!

記事一覧 → Compota-Soft-Press

コメント

Ads Blocker Image Powered by Code Help Pro

お願い - Ads Blocker Detected

このサイトは広告を掲載して運営しています。

ポップアップを閉じて閲覧できますが、よろしければ

このサイト内の広告を非表示にする拡張機能をオフにしていただけませんか?

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

タイトルとURLをコピーしました