1

ファイル パスからファイル拡張子を抽出する必要があります。例: 次のようなファイル パスがあります。

\\Test\data\data.dll

ファイル パスから data.dll を削除して、唯一のファイルを取得する方法

\\Test\data\

出力として。

ワイルドな文字「*」を使ってみました。しかし、それはうまくいきませんでした。

ありがとう!

4

3 に答える 3

4

あなたの場合、デフォルトで最後にファイルまたはフォルダーを削除する特別なコマンドレットがあります。試す:

$path =  \\test\data\data.dll
#Get folderpath    
Split-Path $path
#Get filename only (thanks to Christian for tip)
Split-Path $path -Leaf
于 2013-01-11T12:04:47.813 に答える
0

@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
于 2013-01-11T15:43:39.363 に答える
0

これを行うには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 '^\\.*\\'
于 2013-01-11T14:24:38.543 に答える