批处理文件将多行文本文件转换为一个长行文本文件?

时间:2011-08-26 05:47:02

标签: windows batch-file

我想写一个简单的Windows批处理文件,从标准输入读取一个文本文件, 并向标准输出写入相同的内容,但作为一条长线,有点像你想要的那样 如果用空格替换输入中的每个回车 - 换行符,则得到。

任何人都知道怎么做?

2 个答案:

答案 0 :(得分:1)

如果总大小小于8192个字符,则可以将所有行粘贴在一起 并将结果回显到新文件,最后只有一个CR / LF。

setlocal EnableDelayedExpansion
set "text="
for/f "delims=" %%a in (multiLine.txt) do (
  set "text=!text!%%a"
)
>newFile.txt echo !text!

您也可以使用set /p输出没有CR / LF的文本,但它不能处理等号或前面的空格。

编辑:第一个解决方案有效,但空行和带感叹号的行有问题。

这是一个消除这两个问题的解决方案。

@echo off
setlocal EnableDelayedExpansion
set file=multiLine.txt

set "AllText="
for /F "tokens=2 delims=:" %%L in ('find /c /v "" %file%') do set /a "len=%%L"

<%file% ( 
    for /L %%n in (1,1,!len!) DO (
        set "line="
        set /p "line="
        set "AllText=!AllText!!line!"
    )
)
>newFile.txt echo(!AllText!

答案 1 :(得分:0)

使用powershell:

(gc c:\file) -join ''