ファイル パスからファイル拡張子を抽出する必要があります。例: 次のようなファイル パスがあります。
\\Test\data\data.dll
ファイル パスから data.dll を削除して、唯一のファイルを取得する方法
\\Test\data\
出力として。
ワイルドな文字「*」を使ってみました。しかし、それはうまくいきませんでした。
ありがとう!
ファイル パスからファイル拡張子を抽出する必要があります。例: 次のようなファイル パスがあります。
\\Test\data\data.dll
ファイル パスから data.dll を削除して、唯一のファイルを取得する方法
\\Test\data\
出力として。
ワイルドな文字「*」を使ってみました。しかし、それはうまくいきませんでした。
ありがとう!
あなたの場合、デフォルトで最後にファイルまたはフォルダーを削除する特別なコマンドレットがあります。試す:
$path = \\test\data\data.dll
#Get folderpath
Split-Path $path
#Get filename only (thanks to Christian for tip)
Split-Path $path -Leaf
@StephenMills が彼の回答で語った問題の回避策として、私の 2 セントを追加するだけです。
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).FullName
J:\data\data.dll
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).BaseName
data
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).name
data.dll
PS C:\ps> ( [system.io.fileinfo]"J:\data\data.dll" ).DirectoryName
J:\data
これを行うには2つの異なる方法があります。1 つは、Split-Path を使用することです。もう 1 つは、正規表現で -replace を使用することです。どちらも PowerShell V3 ではうまく機能しますが、パスにドライブ文字が含まれている場合、Split-Path は V2 では機能しませんが、システムにはそのドライブ文字がありません。
#Get Folder
Split-Path '\\test\data\data.dll'
'\\test\data\data.dll' -replace '\\[^\\]+$'
#Get File
Split-Path '\\test\data\data.dll' -Leaf
'\\test\data\data.dll' -replace '^\\.*\\'