1

我需要从文件路径中提取文件扩展名。例如:我有一个文件路径,如:

\\Test\data\data.dll

如何从文件路径中删除data.dll,这样我只得到

\\Test\data\

作为输出。

我尝试使用通配符 - *. 但这没有用。

谢谢!

4

3 回答 3

4

在您的情况下,有一个特殊的 cmdlet,默认情况下会在最后删除文件或文件夹。尝试:

$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

这里有 2 种不同的方法。一种是使用拆分路径。另一种是使用 -replace 与正则表达式。它们都在 PowerShell V3 中运行良好,但如果路径中有驱动器号,但拆分路径在 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 回答
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 回答