PowerShell を使用してファイル拡張子を取得する方法

  1. PowerShell の Split-Path を使用してファイル拡張子を取得
  2. PowerShell の Get-ChildItem コマンドレットを使用してファイル拡張子を取得
  3. PowerShell の System.IO.Path を使用してファイル拡張子を取得
  4. PowerShell の System.IO.FileInfo を使用してファイル拡張子を取得
  5. 結論
PowerShell を使用してファイル拡張子を取得する方法

通常、PowerShell スクリプトで作業する際には、フルパスからファイル名を抽出する必要があります。例えば、スクリプトがフルファイルパスを受け取り、ファイル拡張子のみを取得したい場合です。

この包括的なガイドでは、PowerShell を使用してファイル拡張子を抽出するさまざまな手法を掘り下げます。これは数多くのスクリプトシナリオにおいて基本的でありながら重要なタスクです。この記事の各セクションでは、Split-Path のシンプルさから、より高度な使用法である .NET フレームワークおよび System.IO.FileInfo クラスに至るまで、異なるアプローチが紹介されています。

PowerShell の Split-Path を使用してファイル拡張子を取得

この文脈で Split-Path -Leaf を使用する主な目的は、与えられたパスからファイル名とその拡張子を分離することです。この方法は、ファイル名または相対パスのみで作業する場合に特に効果的です。

ファイル名が取得されると、文字列分割メソッドを使用して拡張子を簡単に抽出できます。

例のコード:

 powershellCopy# Define the file path
$filePath = "sample.txt"

# Extract the file extension
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1]

# Output the extension
Write-Output $extension

このスクリプトでは、まずファイル名 $filePath を定義します。Split-Path -Path $filePath -Leaf コマンドはファイル名(sample.txt)を分離します。

次に、この文字列をドットで分割し、最初の要素には拡張子のないファイル名(sample)、2 番目の要素には拡張子(txt)が入った配列が得られます。この配列の 2 番目の要素に [1] でアクセスすることで、拡張子を取得します。

最後に、Write-Output を使用して拡張子を表示します。

出力:

PowerShell を使用してファイル拡張子を取得する - 出力 1

PowerShell の Get-ChildItem コマンドレットを使用してファイル拡張子を取得

Get-ChildItem コマンドは、1つまたは複数の指定された場所のアイテムを取得します。例えば、オブジェクトがコンテナの場合、そのコンテナ内のもの、すなわち子アイテムを取得します。

場所は、ディレクトリなどのファイルシステムや、別の Windows PowerShell プロバイダーによって公開されたサイトである可能性があります。Get-ChildItem コマンドは、ファイルシステムドライブ内のディレクトリ、サブディレクトリ、およびファイルを取得します。

Get-ChildItem コマンドレットはファイルを扱うため、照会されたファイルの拡張子を取得するためにエクスポートできる PowerShell プロパティ属性があります。Split-Path コマンドレットとは異なり、この方法はファイル名にドット文字が含まれていても、拡張子を適切に取得できます。

例のコード:

 powershellCopyGet-ChildItem 'sample.txt' | Select-Object Extension

このスクリプトでは、Get-ChildItem 'sample.txt'sample.txt のファイルオブジェクトを取得します。Get-ChildItem コマンドレットは通常、ディレクトリ内のアイテムをリストするために使用されますが、特定のファイル名を指定することで、そのファイルのファイルオブジェクトを返します。

このオブジェクトにはさまざまなプロパティが含まれており、その 1つがファイルの拡張子です。

Get-ChildItem からの出力はその後、Select-Object Extension にパイプされます。このコマンドレットはファイルオブジェクトのプロパティをフィルタリングし、Extension プロパティのみを出力します。

出力:

PowerShell を使用してファイル拡張子を取得 - 出力 2

PowerShell の System.IO.Path を使用してファイル拡張子を取得

次のアプローチは .NET フレームワークのクラスに基づいています。PowerShell スクリプトで .NET フレームワークのクラスを使用することは一般に推奨されませんが、特にネイティブ PowerShell コマンドが利用可能な場合、この特定のユースケースには適切である可能性があります。

以下の例では、ファイル名が与えられた場合、System.IO.Path クラスの GetExtension 静的メソッドを使用します。

例のコード:

 powershellCopy[System.IO.Path]::GetExtension("sample.txt")

提供された例では、.NET クラス [System.IO.Path] が使用され、その静的メソッド GetExtension() が呼び出されます。引数として"sample.txt"をメソッドに渡します。

このメソッドは文字列を分析し、ファイルの拡張子を表す部分文字列を抽出します。このメソッドの美しさは、ファイル名やパスを処理するシンプルさと直接的なアプローチにあります。ファイルがファイルシステム上に存在する必要がないからです。

出力:

PowerShell を使用してファイル拡張子を取得する - 出力 3

PowerShell の System.IO.FileInfo を使用してファイル拡張子を取得

この文脈での System.IO.FileInfo の主な用途は、特定のファイルについての詳細情報、例えばその拡張子を取得することです。この方法はファイルのメタデータが重要で、基本的なファイル処理だけでは不十分なスクリプトに特に役立ちます。

例のコード:

 powershellCopy# Create a FileInfo object for the specified file
$FileInfo = New-Object System.IO.FileInfo('sample.txt')

# Access the extension property of the FileInfo object
$Extension = $FileInfo.Extension

# Print the extension
Write-Output $Extension

このスクリプトでは、まず sample.txt のために System.IO.FileInfo オブジェクトを作成するプロセスを開始します。このオブジェクトは、ファイル名、ディレクトリ、サイズ、そして重要な拡張子を含む、ファイルに関するさまざまな詳細をカプセル化します。

FileInfo オブジェクトの .Extension プロパティにアクセスすることで、ファイルの拡張子を抽出します。このプロパティは、先頭のピリオドを含む文字列(例えば .txt)として拡張子を返します。

出力:

PowerShell を使用してファイル拡張子を取得する - 出力 4

結論

PowerShell におけるファイル拡張子のニュアンスをナビゲートすることは、各々独自の利点やアプリケーションを持つ技術のスペクトルを明らかにします。この探求は、シンプルで迅速な取得に理想的な Split-PathGet-ChildItem の使用から、複雑さと能力のバランスが優雅に達成される .NET フレームワークの深い領域、System.IO.Path および System.IO.FileInfo に至るまで行きました。

ルーチンタスクの自動化、大量ファイル操作の実行、システム管理のための高度なスクリプトの開発にかかわらず、これらの方法を理解することはあなたの PowerShell ツールキットを豊かにします。ここで議論された多様なアプローチは、PowerShell の適応性と堅牢性を強調し、初心者と経験豊富なスクリプターの両方が精度と効率でソリューションをカスタマイズできる力を与えます。

チュートリアルを楽しんでいますか? <a href="https://www.youtube.com/@delftstack/?sub_confirmation=1" style="color: #a94442; font-weight: bold; text-decoration: underline;">DelftStackをチャンネル登録</a> して、高品質な動画ガイドをさらに制作するためのサポートをお願いします。 Subscribe
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

関連記事 - PowerShell File