Você pode colocar nolugardoespaçoentreastringsubstitutaondevocêdesejaqueanovalinha(CRLF
)sejacolocadaparaobteroresultadoesperado-backtick"r" backtick "n" (veja abaixo ).
Isso requer apenas uma pequena alteração no script existente e ele funcionará conforme o esperado de acordo com sua descrição e exemplos de resultados de saída.
Script
@echo off
setlocal enableextensions disabledelayedexpansion
set search=Old string
set replace=New'r'nstring
set textFile=Test.txt
:PowerShell
SET PSScript=%temp%\~tmpStrRplc.ps1
ECHO (Get-Content "%~dp0%textFile%").replace("%search%", "%replace%") ^| Set-Content "%~dp0%textFile%">"%PSScript%"
SET PowerShellDir=C:\Windows\System32\WindowsPowerShell\v1.0
CD /D "%PowerShellDir%"
Powershell -ExecutionPolicy Bypass -Command "& '%PSScript%'"
PAUSE
EXIT
Observação: Não coloque espaços entre as duas strings na variável replace=
para garantir que não haja espaços à direita ou iniciais na nova string com a nova linha como você necessidade.
Resultados
Antes
Oldstring
Depoisde
NewString