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

Marion Paul Kenneth Mendoza 2023年1月30日
  1. PowerShell で Split-Path を使用してファイル拡張子を取得する
  2. PowerShell の Get-ChildItem コマンドレットを使用してファイル拡張子を取得する
  3. PowerShell で .NET フレームワークを使用してファイル拡張子を取得する
PowerShell を使用してファイル拡張子を取得する

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

この記事では、PowerShell スクリプトを使用したいくつかのファイル拡張子の方法について説明します。

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

ファイル名から拡張子を分割するには、-Leaf パラメーターを使用して、拡張子を抽出する場所を指定できます。リーフは、パスの最後の要素または一部です。

$filePath = "C:\temp\subfolder\File1.txt";
$extension = (Split-Path -Path $filePath -Leaf).Split(".")[1];
Write-Output $extension

出力:

txt

コードスニペットで、提供されたパスを分割する Split() 関数を呼び出したことにお気づきかもしれません。

ドットを使用しましたファイル名と拡張子がドット区切り文字で区切られているため、区切り文字として使用します。次に、配列を [1] 保存された拡張値と呼びました。

配列 [0] を呼び出してみると、パスのファイル名が取得されます。

サンプルコード:

(Split-Path -Path $filePath -Leaf).Split(".")[0];

出力:

File1

区切り文字としてドット文字を使用しているため、このメソッドは、ファイル名に他のドットが含まれていない場合にのみ機能します。ファイル名にはドット文字を含めることができることに注意してください。

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

Get-ChildItem コマンドは、1つ以上の指定された場所にあるアイテムを取得します。たとえば、オブジェクトがコンテナの場合、子アイテムと呼ばれる、そのコンテナ内のアイテムを取得します。

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

Get-ChildItem コマンドレットはファイルを処理するため、クエリされたファイルの拡張子を取得するためにエクスポートできる PowerShell プロパティ属性があります。

Split-Path コマンドレットとは異なり、このメソッドは、ファイル名にドット文字が含まれていても、拡張子を適切に送信できます。

サンプルコード:

Get-ChildItem 'C:\temp\file.1.txt' | Select Extension

出力:

Extension
---------
.txt

PowerShell で .NET フレームワークを使用してファイル拡張子を取得する

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

以下の例では、ファイル名が指定されている場合、System.IO.Path クラスの GetExtension 静的メソッドを使用します。

サンプルコード:

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

出力:

.txt

ファイル名を取得する場合は、代わりに GetFileNameWithoutExtension 静的メソッドを使用することもできます。

サンプルコード:

[System.IO.Path]::GetFileNameWithoutExtension("File1.txt")

出力:

File1
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