我有一个长字符串的现有文本文件。我想创建一个.bat脚本,在找到~
后插入回车符和换行符。
例如,原始文本文件是:
This is a long string~which should be many lines~and yet it is not
想要的输出是:
This is a long string~
which should be many lines~
and yet it is not
答案 0 :(得分:1)
我不确定如何在批处理文件中进行代字符替换,因为代字符是用于子字符串的SET命令中的特殊字符。
但这应该让你朝着正确的方向前进。
@echo off
set "longline=This is a long string~which should be many lines~and yet it is not"
set count=1
:loop
FOR /F "tokens=1* delims=~" %%G IN ("%longline%") DO (
SET "line%count%=%%G"
set "longline=%%H"
IF DEFINED longline (set /a count+=1 &goto loop)
)
FOR /L %%I IN (1,1,%count%) DO call echo %%line%%I%%
pause
答案 1 :(得分:1)
首先让我解释三种不同类型的换行符/换行符/行结束/行终止类型。
转义序列\r
有carriage return,其中十六进制代码值0D
缩写为 CR ,line-feed带有转义序列{{ 1}},十六进制代码值\n
缩写为 LF 。
所以我认为实际上任务是在tilde之后插入一个回车,而不是回车+换行。
How can you find and replace text in a file using the Windows command-line environment?上的答案为使用Windows命令行替换文本文件中的字符串提供了许多解决方案。
第一个建议的解决方案是使用 Dave Benham 编写的JREPL.BAT。
0A
此解决方案适用于包含发布行的文本文件,并生成预期输出。
答案 2 :(得分:1)
我想您也可以从批处理文件中使用PowerShell:
@If "%~1"=="" (Exit/B) Else If Not Exist "%~1" Exit/B
@Powershell -C "(GC '%~1') -Replace '~',\"`r`n\"|SC '%~1'"
以上接受您的输入文件作为其参数,这意味着它可以像拖放作业一样简单。输出文件默认为ASCII编码。