如何在现有文本文件中插入换行符?

时间:2017-10-23 21:28:06

标签: batch-file

我有一个长字符串的现有文本文件。我想创建一个.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

3 个答案:

答案 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)

首先让我解释三种不同类型的换行符/换行符/行结束/行终止类型。

转义序列\rcarriage return,其中十六进制代码值0D缩写为 CR line-feed带有转义序列{{ 1}},十六进制代码值\n缩写为 LF

  • MS-DOS / Windows 上的文本文件使用 CR + LF 作为换行符。
  • Unix / Linux / MAC 上的文本文件(因为OS X)只使用 LF 作为换行符。
  • OS X之前的 MAC 上的文本文件仅使用 CR 作为换行符。

所以我认为实际上任务是在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编码。