PowerShell 指定文字列と一致するデータを処理から除外するプログラム例

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

PowerShell 指定文字列と一致するデータを処理から除外するプログラム例1

※ 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 のほかにさまざまな拡張子のファイルが置かれているフォルダをカレントディレクトリにしています。

PowerShell 指定文字列と一致するデータを処理から除外するプログラム例1

前の記事で紹介した、カレントディレクトリ(とその下位のディレクトリ)にあるファイル群の全ての拡張子列挙するプログラムで、さきほど追加した除外リストの拡張子出力されていないことが確認できます。

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!

記事一覧 → 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をコピーしました