我有一个.txt文件,其中包含一些重要的内容。其中一条是通往我存储某些文件的地方。此路径在.txt文件中的两个位置使用。
"path" : "D:\\final_test\\abc"
" ABC"是一个目录名,并且它一直是其他名称,因为我想用get-content和powershell替换该路径。
我做了很少的尝试,当我做这样的事情时
powershell -Command "(gc test.txt) -replace 'abc', 'XYZ' | Out-file test.txt
一切正常,但是当我做这样的事情时
powershell -Command "(gc test.txt) -replace 'D:\\final_test\\abc', 'D:\\final_test\\XYZ' | Out-file test.txt
或类似的东西
powershell -Command "(gc test.txt) -replace '^D:\\final_test\\.*$', 'D:\\final_test\\XYZ' | Out-file test.txt
它不会工作(在.txt文件中没有任何改变)。
当然最好的方法是更换" D:\\ final_test \\ ...." (不管是什么," final_test \\")。
你能以某种方式帮助我吗? 我不确定,但看起来有一些问题"反斜杠"标志。
答案 0 :(得分:3)
由于反斜杠字符是正则表达式中的转义字符,因此必须在-replace命令的第一部分中将它们加倍。 这应该有效:
powershell -Command "(gc test.txt) -replace 'D:\\\\final_test\\\\abc', 'D:\\final_test\\XYZ' | Out-file test.txt
答案 1 :(得分:1)
我不确定你要改变的路径的哪一部分,但试试这个?
powershell -Command "(gc test.txt) -replace '^D:\\final_test\\', 'D:\New_Name\' | Out-file test.txt
答案 2 :(得分:1)
-replace
函数使用正则表达式,因此您必须转义一些正则表达式字符。无论如何,这是我要使用的正则表达式:
(Get-Content .\test.txt) -replace '(?<="path" : ")[^"]+', 'D:\\final_test\\XYZ' | Set-Content test.txt