PowerShell を使用してファイル拡張子を取得する
-
PowerShell で
Split-Path
を使用してファイル拡張子を取得する -
PowerShell の
Get-ChildItem
コマンドレットを使用してファイル拡張子を取得する -
PowerShell で
.NET
フレームワークを使用してファイル拡張子を取得する
通常、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 specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedIn