Powershell Replace功能在替换时将逗号视为点

时间:2016-02-23 22:47:03

标签: c# .net powershell batch-file scripting

所以我喜欢100个不同类型的文件,这些文件包含以下字符串:

1.2.0.0

1,2,0,0

我只是试图将 1.2.0.0 替换为 1.2.0.1 ,只有带点但字符串的字符串也会替换这些字符串 1,2 ,0,0 1.2.0.0 为什么Powershell将逗号视为句点?

get-childitem $OUTPUT_PATH -recurse -include *.rc,*.cs,*.rtf,*.sql | 
select -expand fullname |
foreach {
  (Get-Content $_) -replace '1.2.0.0','1.2.0.1' | Set-Content $_
}

1 个答案:

答案 0 :(得分:5)

-replace运算符使用正则表达式(请参阅help about_Comparison_Operators)。正则表达式中的.表示“任何字符”。如果您的意思是文字.,则需要使用\转义,\.。例如:

'abc 1.2.0.0 def' -replace '1\.2\.0\.0', '1.2.0.1'

如果您不想使用正则表达式,请使用Replace对象的String方法。例如:

'abc 1.2.0.0 def'.Replace('1.2.0.0','1.2.0.1')

两者都会输出abc 1.2.0.1 def