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

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
はこのファイルオブジェクトのプロパティにアクセスし、拡張子なしのファイル名を取得します。
出力:
複数のファイルからパスと拡張子を削除したい場合は、Get-ChildItem
コマンドレットを使用できます。次のコマンドは、PowerShell でパスと拡張子なしで複数のファイル名を取得する方法を示しています。
例
(Get-ChildItem "*.txt").BaseName
このコード行は、指定されたディレクトリ内のすべての .txt
ファイルのベース名(拡張子なしのファイル名)をリストします。
-
Get-ChildItem "*.txt"
:このコマンドは、指定されたディレクトリからすべての.txt
ファイルを取得します。 -
.BaseName
:このプロパティは、Get-ChildItem
によって返された各ファイルオブジェクトに対してアクセスされ、拡張子なしのファイル名を抽出します。
出力:
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.txt
の FileInfo
オブジェクトを作成します。このオブジェクトにはファイルに関する詳細情報が含まれています。
このオブジェクトの .BaseName
プロパティにアクセスすることで、拡張子なしのファイル名を取得します。
出力:
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 におけるファイル操作の習得は効率的なシステム管理に不可欠であり、この記事ではファイル名からパスと拡張子を削除するさまざまな方法に焦点を当てました。個々のファイルに対しては簡単な (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 の可能性を最大限に活用する論理的な進展があります。