3

У меня есть пакетный скрипт, который может заменить текст, и я хочу, чтобы он заменил строки, за которыми следует новая строка текста под оригиналом. Пример будет следующим:

До:

Old string

После:

New
String

Я пробовал несколько команд новой строки, используемых в пакетном режиме (некоторые из которых можно найти на сайтах Stack Exchange), и ни одна из них не работает. Я считаю, что это из-за синтаксиса сценария. Вот сценарий, с которым я работаю:

@echo off
setlocal enableextensions disabledelayedexpansion

set search=Old string
set replace=New string
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%'"
EXIT

Как я могу реализовать новую строку "инъекция" в моем скрипте?

1 ответ1

3

Вы можете положить вместо пробела между строкой замены, где вы хотите разместить символ новой строки (CRLF), чтобы получить ожидаемый результат - backtick "r" backtick "n" (см. ниже).

Для этого требуется только одно небольшое изменение в существующем скрипте, и он будет работать так, как ожидается, согласно вашему описанию и результатам вывода примера.


скрипт

@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

Примечание. Обязательно не ставьте пробелы между двумя строками в переменной replace= чтобы в новой строке не было завершающих или начальных пробелов с новой строкой, как вам нужно.


Результаты

До

Old string

После

New
String

Дополнительные ресурсы

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .