用PowerShell替换文本中的单词

时间:2014-02-26 15:49:25

标签: powershell powershell-v2.0

我有一个txt文件,其中包含每行中文件夹的所有路径。

K:\AppData\Released_To_Production\EDCO\1632
K:\AppData\Released_To_Production\EDCO\1633
K:\AppData\Released_To_Production\EDCO\1634

我使用poweshell将K:\替换为D:\data\所以它应该是这样的

D:\Data\AppData\Released_To_Production\EDCO\1632
D:\Data\AppData\Released_To_Production\EDCO\1633
D:\Data\AppData\Released_To_Production\EDCO\1634

它应该很简单,但我无法通过.....

Get-Content C:\work\path.txt | ForEach-Object { $_ -replace "K':''\'", "D':''\'Data" } | Set-Content C:\work\000.txt

输出文件中没有任何内容......

有什么建议吗?

4 个答案:

答案 0 :(得分:4)

另一种方法:

${C:\work\path.txt} -replace 'K:\\','D:\Data\' | Set-Content C:\work\000.txt

这是另一个转折: - )

${C:\work\000.txt} = ${C:\work\path.txt} -replace 'K:\\','D:\Data\'

答案 1 :(得分:1)

您实际上并不需要ForEach-Object。您可以一步替换它:

(Get-Content C:\work\path.txt) -replace "K:\\", "D:\Data" | Set-Content C:\work\000.txt

请注意,-replace的第一个参数是正则表达式,因此您需要转义反斜杠。

答案 2 :(得分:0)

Get-Content C:\work\path.txt  | % { $_.replace("K:\","D:\data\")} | Set-Content C:\work\000.txt

答案 3 :(得分:0)

尝试本文中的Replace-FileString.ps1脚本:

Windows IT Pro: Replacing Strings in Files Using PowerShell

Replace-FileString -path C:\work\path.txt -pattern '^K:\\' -replacement 'D:\Data\' -Multiline

-Multiline 参数告诉脚本^应匹配行的开头(而不是文件的开头)。要使用包含替换字符串的副本覆盖文件,请添加 -Overwrite 参数。