在 .bat 中使用 powershell 更改两行代码
Changing two lines of code with powershell in a .bat
我一直在关注这个 并且我在 .bat 中使用了这个代码:
powershell -Command "(gc -Raw test.py) -replace 'test = ''lol''`r`nlol = ''test''', 'test1 = ''lol1''`r`nlol2 = ''test2''' | Out-File test2.py"
它确实识别反引号 r 反引号 n 因为 if 替换了这个文件:
通过这个文件:
我的问题是在创建的文件中,我有反引号 r 反引号 n 而不是换行符。正常吗?我错过了什么吗?
我也尝试使用 \r\n
而不是反引号 r 反引号 n 并且发生了同样的事情(它被识别但是在输出文件中有 \r\n
而不是实际的换行符(我在 Windows 11).
您需要使用 double-quotes 作为转义序列,请参阅 about_Special_Characters。
供您测试的示例:
$text = @'
test = 'lol'
lol = 'test'
'@
$text -replace "test = 'lol'\r?\nlol = 'test'", "test1 = 'lol1'`r`nlol2 = 'test2'"
至于你从批处理文件调用 powershell.exe
,我相信这可行(你可以使用 "^""
进行转义):
powershell -Command "(gc -Raw test.py) -replace "^""test = 'lol'\r?\nlol = 'test'""", """test1 = 'lol1'`r`nlol2 = 'test2'"^"" | Out-File test2.py"
调用 cmd
的所有功劳和所需的转义转到 。
我一直在关注这个
powershell -Command "(gc -Raw test.py) -replace 'test = ''lol''`r`nlol = ''test''', 'test1 = ''lol1''`r`nlol2 = ''test2''' | Out-File test2.py"
它确实识别反引号 r 反引号 n 因为 if 替换了这个文件:
通过这个文件:
我的问题是在创建的文件中,我有反引号 r 反引号 n 而不是换行符。正常吗?我错过了什么吗?
我也尝试使用 \r\n
而不是反引号 r 反引号 n 并且发生了同样的事情(它被识别但是在输出文件中有 \r\n
而不是实际的换行符(我在 Windows 11).
您需要使用 double-quotes 作为转义序列,请参阅 about_Special_Characters。
供您测试的示例:
$text = @'
test = 'lol'
lol = 'test'
'@
$text -replace "test = 'lol'\r?\nlol = 'test'", "test1 = 'lol1'`r`nlol2 = 'test2'"
至于你从批处理文件调用 powershell.exe
,我相信这可行(你可以使用 "^""
进行转义):
powershell -Command "(gc -Raw test.py) -replace "^""test = 'lol'\r?\nlol = 'test'""", """test1 = 'lol1'`r`nlol2 = 'test2'"^"" | Out-File test2.py"
调用 cmd
的所有功劳和所需的转义转到