我有一个可以替换文本的批处理脚本,我想让它替换原始文本下方带有换行符的字符串。示例如下:
前:
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
反引号键