我有很多文件都有类似的格式。有些是不同的长度,但通常它们都遵循这种格式:
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
。出了什么问题?
答案 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