我有一个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
输出文件中没有任何内容......
有什么建议吗?
答案 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 参数。