我如何使用这个脚本来替换并注入换行符?

我如何使用这个脚本来替换并注入换行符?

我有一个可以替换文本的批处理脚本,我想让它替换原始文本下方带有换行符的字符串。示​​例如下:

前:

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

你可以放在此处输入图片描述代替替换字符串之间的空格,以便放置换行符 ( CRLF) 以获得预期结果 -反引号“r” 反引号“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

更多资源

  • 转义符、分隔符和引号

    Special characters
    
      Special characters are used to format/position string output.
    
      `r`n  Carriage return + New line
    
  • 反引号键

    在此处输入图片描述

相关内容