在文件扩展名之前替换string中的字符

时间:2016-06-16 12:11:45

标签: powershell

我有一个变量,带有以下字符串值:

PS C:\> $sql.physicalname
I:\Data\Data1.mdf
I:\Data\Data2.ndf
I:\Data\Data3.ndf
I:\Data\Data4.ndf
I:\Data\Data5.ndf
I:\Data\Data6.ndf
I:\Data\Data7.ndf
I:\Data\Data8.ndf
I:\Data\Data9.ndf
I:\Data\log.ldf

我想要的是替换/修剪字符串,以便只保留.mdf / .ndf / .ldf扩展名:

.mdf
.ndf
.ndf
.ndf
.ndf
.ndf
.ndf
.ndf
.ndf
.ldf

我尝试将-replace参数与*通配符一起使用,但我无法绕过它。

2 个答案:

答案 0 :(得分:3)

因为它是传递给-replace的正则表达式,所以请尝试例如与

-replace ".*\.", "."  

更好,更强大的方法是使用类似的东西

$sql.physicalname | % { [System.IO.Path]::GetExtension($_) }

答案 1 :(得分:1)

您可以使用:[System.IO.Path]::GetExtension()