PowerShell でファイル名からパスと拡張子を削除する方法

  1. PowerShell のファイル名からパスと拡張子を削除するための BaseName プロパティの使用
  2. PowerShell のファイル名からパスと拡張子を削除するための System.IO.Path クラスの使用
  3. 結論
PowerShell でファイル名からパスと拡張子を削除する方法

PowerShell は、システム内のさまざまなファイル操作の処理をサポートしています。PowerShell では、ファイルの作成、コピー、移動、名前変更、編集、削除、および表示などのタスクを実行できます。

PowerShell には、ファイルの名前フルパス拡張子を取得するために使用できる異なるコマンドレットがあります。システム内のファイルを操作する際、パスや拡張子なしのファイル名が必要になることがあります。

このチュートリアルでは、PowerShell でファイル名からパスと拡張子を削除する方法を学びます。

PowerShell のファイル名からパスと拡張子を削除するための BaseName プロパティの使用

PowerShell の Get-Item コマンドレットは、ファイルシステム内のアイテムのプロパティを取得するために使用される多目的ツールです。これらのプロパティの一つが .BaseName であり、私たちの目的に特に便利です。

例:

(Get-Item "sample.txt").BaseName

この例では、スクリプトは sample.txt が現在のディレクトリにあるファイルであると仮定しています。ファイルが別のディレクトリにある場合は、C:\folder\sample.txt のようにフルパスを含める必要があります。

(Get-Item "sample.txt").BaseName を実行すると、PowerShell は 2つの重要なアクションを実行します。

最初に、Get-Item "sample.txt"sample.txt に対応するファイルオブジェクトを取得します。次に、.BaseName はこのファイルオブジェクトのプロパティにアクセスし、拡張子なしのファイル名を取得します。

出力:

ファイル名からパスと拡張子を削除する PowerShell - 出力 1

複数のファイルからパスと拡張子を削除したい場合は、Get-ChildItem コマンドレットを使用できます。次のコマンドは、PowerShell でパスと拡張子なしで複数のファイル名を取得する方法を示しています。

(Get-ChildItem "*.txt").BaseName

このコード行は、指定されたディレクトリ内のすべての .txt ファイルのベース名(拡張子なしのファイル名)をリストします。

  • Get-ChildItem "*.txt":このコマンドは、指定されたディレクトリからすべての .txt ファイルを取得します。

  • .BaseName:このプロパティは、Get-ChildItem によって返された各ファイルオブジェクトに対してアクセスされ、拡張子なしのファイル名を抽出します。

出力:

ファイル名からパスと拡張子を削除する PowerShell - 出力 2

System.IO.FileInfo クラスを使用して、拡張子なしのファイル名を取得することもできます。

System.IO.FileInfo は、ファイルの作成、コピー、削除、移動、およびオープンに関するプロパティとインスタンスメソッドを提供する .NET クラスです。また、ファイル名、パス、サイズなど、ファイルに関する詳細情報を提供します。

例:

([System.IO.FileInfo]"sample.txt").BaseName

この行は、sample.txt が現在のディレクトリにあるファイルであると仮定しています。ファイルが他の場所にある場合は、C:\path\to\sample.txt のようにフルパスを指定する必要があります。

この例では、([System.IO.FileInfo]"sample.txt")sample.txtFileInfo オブジェクトを作成します。このオブジェクトにはファイルに関する詳細情報が含まれています。

このオブジェクトの .BaseName プロパティにアクセスすることで、拡張子なしのファイル名を取得します。

出力:

ファイル名からパスと拡張子を削除するには PowerShell を使用 - 出力 3

PowerShell のファイル名からパスと拡張子を削除するための System.IO.Path クラスの使用

System.IO.Path クラスは、ファイルパスの文字列操作のための多数のメソッドを提供します。特に、GetFileNameWithoutExtension メソッドは、フルパス文字列から拡張子なしのファイル名を取得するために使用されます。

例:

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

この例では、sample.txt がディレクトリパスなしのファイル名を指すと仮定しています。ファイルが異なるディレクトリに位置している場合は、"C:\folder\sample.txt"のようにフルパスを含める必要があります。

[System.IO.Path]::GetFileNameWithoutExtension("sample.txt") では、PowerShell は System.IO.Path クラスの GetFileNameWithoutExtension メソッドを使用して文字列"sample.txt"を処理します。このメソッドは、文字列をインテリジェントに解析し、ファイル拡張子を特定して削除し、基本ファイル名のみを返します。

このメソッドは非常に効率的であり、実際のファイルが存在する必要はなく、文字列レベルで完全に操作します。

出力:

ファイル名からパスと拡張子を削除する PowerShell - 出力 4

結論

結論として、PowerShell におけるファイル操作の習得は効率的なシステム管理に不可欠であり、この記事ではファイル名からパスと拡張子を削除するさまざまな方法に焦点を当てました。個々のファイルに対しては簡単な (Get-Item "sample.txt").BaseName から始まり、複数のファイルを扱うための (Get-ChildItem "C:\Users\rhntm\*.txt").BaseName に進むことで、バルク操作に役立つアプローチを示しました。

よりオブジェクト指向の [System.IO.FileInfo] クラスを使用した ([System.IO.FileInfo]"sample.txt").BaseName は、詳細なファイル情報を提供しました。一方、[System.IO.Path]::GetFileNameWithoutExtension("sample.txt") の文字列操作の巧妙さは、.NET クラスの力を示しました。これらの方法は PowerShell の多様性を exemplify しており、専門知識を深めたい方には、フルファイルパスで作業することやファイル拡張子を抽出することなど、関連するトピックを探求することで、包括的なシステムスクリプトおよび自動化タスクのための PowerShell の可能性を最大限に活用する論理的な進展があります。

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

Rohan is a learner, problem solver, and web developer. He loves to write and share his understanding.

LinkedIn Website

関連記事 - PowerShell File