Powershell 替换小数

Powershell 替换小数,powershell,rename,Powershell,Rename,我有很多文件都有相似的格式。有些长度不同,但通常都遵循以下格式: First_M_Last_ID_10008.0_DOB_10-19-15_DOS_10-10-10_10.50.24_AM_结束。 我想用无字符替换ID中的.0s,用替换s,而不更改扩展名。例如,如果文件是上面的扩展名为.docx的文件,我希望保留该扩展名,这样文件就不会转换为文本文件。我尝试使用以下代码: Dir | Rename-Item -NewName{$_.name -replace ".0",""} 但它似乎将文件

我有很多文件都有相似的格式。有些长度不同,但通常都遵循以下格式:

First_M_Last_ID_10008.0_DOB_10-19-15_DOS_10-10-10_10.50.24_AM_结束。
我想用无字符替换ID中的
.0
s,用
替换
s,而不更改扩展名。例如,如果文件是上面的扩展名为.docx的文件,我希望保留该扩展名,这样文件就不会转换为文本文件。我尝试使用以下代码:

Dir | Rename-Item -NewName{$_.name -replace ".0",""}

但它似乎将文件中的所有
0
s替换为空白。出了什么问题?

在正则表达式中有特殊的含义。它匹配除换行符以外的任何字符。要匹配文字点,需要用反斜杠(
\。
)将其转义。要替换的其他点前面似乎有数字,因此可以将数字分组(
(\d)\.
),并用分组和下划线(
${1}}
)替换匹配项

试着避开这个点

$a = "First_M_Last_ID_10008.0_DOB_10-19-15_DOS_10-10-10_10.50.24_AM_Ending.csv"

$a = $a -replace ("\.0","")

$a
结果

First_M_Last_ID_10008_DOB_10-19-15_DOS_10-10-10_10.50.24_AM_Ending.csv

非常感谢您的反馈!成功了。非常感谢您的反馈!我感谢你的帮助!
First_M_Last_ID_10008_DOB_10-19-15_DOS_10-10-10_10.50.24_AM_Ending.csv