将多行文本文件转换为一行长文本文件的批处理文件?
我想编写一个简单的Windows批处理文件,从标准输入读取的文本文件, 并写到标准输出相同的内容,但作为一个长行,有点像你 得到什么,如果你换成每节车厢通过空白返回输入。将多行文本文件转换为一行长文本文件的批处理文件?
任何人都知道如何做到这一点?
您可以将所有线粘贴到一起,如果总大小小于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!
谢谢你们两位。这正是我正在寻找的。我是命令行的新手。对于陈述看起来非常有用,但需要花费一些努力去学习。谢谢。 – anton
不对我工作。 – user198989
@ user198989- _Doesnt对我没有任何意义!你的电脑开着吗?你有错误信息吗?什么是输出? – jeb
如果你的文件不大,你可以把所有内容都塞进内存中。例如在VBScript
Set objFS = CreateObject("Scripting.FileSystemObject")
strFile="c:\test\file"
Set objFile=objFS.OpenTextFile(strFile)
strData = objFile.ReadAll
objFile.Close
Wscript.Echo Replace(vbCrLf,"",strData)
我还不知道windows脚本的任何内容,但谢谢你的例子。 – anton
使用PowerShell:
(gc c:\file) -join ''
我不知道任何关于你的答案是什么意思,但我被它吸引,于是我抬起头来对PowerShell的几件事情,这是我从来没有听说过(我用窗多年,但从未使用命令行或脚本或编程窗口)。它看起来非常有用和强大,现在我想我想了解一些关于PowerShell的知识。谢谢。 – anton
那你试试? – steenhulthin
@steenhulthin - 我认为,一个for语句循环直通输入线将要走的路,但我不知道如何得到它的工作。下面的答案正是我想要的。 – anton