替换小数

时间:2015-08-13 16:27:45

标签: powershell rename

我有很多文件都有类似的格式。有些是不同的长度,但通常它们都遵循这种格式:

First_M_Last_ID_10008.0_DOB_10-19-15_DOS_10-10-10_10.50.24_AM_Ending. 

我想将ID中的.0替换为无字符,并将.替换为_而不更改扩展名。例如,如果文件是上面扩展名为.docx的文件,我想保留它,这样文件就不会转换为文本文件。我尝试过使用此代码:

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

但它似乎用空格替换文件中的所有0。出了什么问题?

2 个答案:

答案 0 :(得分:1)

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

Dir | Rename-Item -NewName {$_.Name -replace '\.0','' -replace '(\d)\.','${1}_'}

答案 1 :(得分:0)

尝试转义点。

$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