windows - Batch-fil til at konvertere tekstlinje med flere linjer til en lang linje tekstfil?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg vil gerne skrive en enkel Windows-batch-fil, der læser fra standardindgang en tekstfil,
og skriver til samme output samme indhold, men som en lang linje, som om, hvad du ville
få, hvis du har erstattet hver transport-returlinje-feed i indgangen med et tomt.


Nogen ved, hvordan man gør dette?

Bedste reference


Du kan indsætte alle linjer sammen, hvis den samlede størrelse er mindre end 8192 tegn.

Og ekko resultatet til den nye fil med kun en CR/LF i slutningen.


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


Du kan også bruge set /p til at udskrive tekst uden CR/LF, men det kan ikke håndtere ens tegn eller hvide rum på forsiden.


EDIT: Den første løsning virker, men har problemer med tomme linjer og linjer med udråbstegn.


Dette er en løsning, der eliminerer begge problemer.


@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!

Andre referencer 1


Hvis din fil ikke er stor, kan du opsuge alt i hukommelsen. Eksempel i vbscript


Set objFS = CreateObject("Scripting.FileSystemObject")
strFile="c:	estfile"
Set objFile=objFS.OpenTextFile(strFile)
strData = objFile.ReadAll
objFile.Close
Wscript.Echo Replace(vbCrLf,"",strData)

Andre referencer 2


med powershell:


(gc c:file) -join ''