Windows に標準搭載されている、マイクロソフトが開発した .NET フレームワークが利用できるオブジェクト指向のコマンドラインインタプリタ (CLI) PowerShell で、配列にで指定した文字列と一致するデータ(例では拡張子)を除外するプログラム例と実行結果を紹介します。

※ Windows PowerShell 5.1.19041.5965 を使用します。
※プログラムは自己責任でご利用ください。
PowerShell の配列変数の、作成、取得と設定、追加について
PowerShell の配列変数の、作成、取得と設定、追加については、以下の記事を参照してください。
指定したフォルダ内の全ての拡張子を列挙する PowerShell プログラム
ベースとなる、指定したフォルダ内の全ての拡張子を列挙する PowerShell のプログラムについては以下の記事を参照してください。
指定した拡張子を除外するプログラム例
前述のプログラムに2行追加して、指定した拡張子の文字列を一致する出力を除外します。
追加した2行目では、除外する拡張子(.dll, .fnt)の文字列を配列変数で指定します。
選別をする Where-Object コマンドレットの条件の3つ目(追加した9行目)で、除外する拡張子の配列の要素のいずれかと同じ拡張子を持つのファイル (FileInfo オブジェクト)については、これ以上処理を行わないように分けています。
# 除外する拡張子を指定します。
$excludeExtensions = @('.dll', '.fnt') # 拡張子の除外リスト
# 除外するフォルダ、拡張子を除いた、カレントディレクトリ以下に含まれる拡張子を表示します。
Get-ChildItem -Recurse -File -Force |
Where-Object {
$_.FullName -notmatch '\\\.git\\' -and
$_.Extension -ne '' -and
$_.Extension -notin $excludeExtensions
} |
Select-Object -ExpandProperty Extension |
ForEach-Object { $_.TrimStart('.') } |
Sort-Object -Unique |
ForEach-Object { Write-Host "*.$_" }
Where-Object コマンドレットの -notin パラメータは、全ての要素に一致しない場合にオブジェクトを取得します。
-NotIn
プロパティ値が指定された値のいずれにも完全に一致しない場合に、このコマンドレットがオブジェクトを取得することを示します。
Where-Object (Microsoft.PowerShell.Core) – PowerShell | Microsoft Learn
以下は実行結果です。
.dll や .fnt のほかにさまざまな拡張子のファイルが置かれているフォルダをカレントディレクトリにしています。

前の記事で紹介した、カレントディレクトリ(とその下位のディレクトリ)にあるファイル群の全ての拡張子を列挙するプログラムで、さきほど追加した除外リストの拡張子は出力されていないことが確認できます。
PS G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib> # 除外する拡張子を指定します。
>> $excludeExtensions = @('.dll', '.fnt') # 拡張子の除外リスト
>>
>> # 除外するフォルダ、拡張子を除いた、カレントディレクトリ以下に含まれる拡張子を表示します。
>> Get-ChildItem -Recurse -File -Force |
>> Where-Object {
>> $_.FullName -notmatch '\\\.git\\' -and
>> $_.Extension -ne '' -and
>> $_.Extension -notin $excludeExtensions
>> } |
>> Select-Object -ExpandProperty Extension |
>> ForEach-Object { $_.TrimStart('.') } |
>> Sort-Object -Unique |
>> ForEach-Object { Write-Host "*.$_" }
*.bin
*.cache
*.cfg
*.ctex
*.dylib
*.exp
*.fontdata
*.fugafuga
*.gd
*.gdextension
*.gdignore
*.gitattributes
*.gitignore
*.godot
*.hogehoge
*.html
*.import
*.js
*.lib
*.md
*.md5
*.Node
*.Object
*.pck
*.piyopiyo
*.png
*.res
*.Resource
*.scn
*.so
*.svg
*.TMP
*.tres
*.tscn
*.ttf
*.txt
*.wasm
拡張子の除外リストの配列を空にして実行すると、さきほどは除外されて出力されなかった .dll と .fnt 拡張子も結果に出力されています。
PS G:\Dev\Godot4GD\SakuraCrowd\SakuraCrowdGodotLib> # 除外する拡張子を指定します。
>> $excludeExtensions = @() # 拡張子の除外リスト
>>
>> # 除外するフォルダ、拡張子を除いた、カレントディレクトリ以下に含まれる拡張子を表示します。
>> Get-ChildItem -Recurse -File -Force |
>> Where-Object {
>> $_.FullName -notmatch '\\\.git\\' -and
>> $_.Extension -ne '' -and
>> $_.Extension -notin $excludeExtensions
>> } |
>> Select-Object -ExpandProperty Extension |
>> ForEach-Object { $_.TrimStart('.') } |
>> Sort-Object -Unique |
>> ForEach-Object { Write-Host "*.$_" }
*.bin
*.cache
*.cfg
*.ctex
*.dll
*.dylib
*.exp
*.fnt
*.fontdata
*.fugafuga
*.gd
*.gdextension
*.gdignore
*.gitattributes
*.gitignore
*.godot
*.hogehoge
*.html
*.import
*.js
*.lib
*.md
*.md5
*.Node
*.Object
*.pck
*.piyopiyo
*.png
*.res
*.Resource
*.scn
*.so
*.svg
*.tmp
*.tres
*.tscn
*.ttf
*.txt
*.wasm
まとめ
今回は、Windows に標準搭載されている、マイクロソフトが開発した .NET フレームワークが利用できるオブジェクト指向のコマンドラインインタプリタ (CLI) PowerShell で、配列にで指定した文字列と一致するデータ(例では拡張子)を除外するプログラム例と実行結果を紹介しました。
参照サイト Thank You!
- Git
- Git – gitattributes Documentation
- PowerShell とは – PowerShell | Microsoft Learn
- Where-Object (Microsoft.PowerShell.Core) – PowerShell | Microsoft Learn
記事一覧 → Compota-Soft-Press
コメント