WafflesAteMyMother
WafflesAteMyMother

Reputation: 63

How to combine multiple lines in a single text file into one line, in Windows?

I have a multiple standard text files that follow this format, with varying numbers of lines in each file:

Line1
Line2
Line3
Line4

I want to merge every line into one, with a space in between each set of characters, so the text file would look as such:

Line1 Line2 Line3 Line3

...and so on. This needs to work with any given number of lines, due to the fact that each text file contains a different number of lines. My intention is not to merge the lines in the text files; I want each text file to remain separate. All the solutions I have found online either don't quite fit this or work exclusively with UNIX. I am running Windows 7. This can be done in Powershell, VBS, Batch, a particular program, doesn't matter, it just needs to work with Windows.

Much appreciated!

Upvotes: 5

Views: 10700

Answers (6)

tomsv
tomsv

Reputation: 7277

Install git-scm, cygwin or something else that contains bash, then you can do

cat *.txt | tr "\n" " "

Upvotes: 2

Ansgar Wiechers
Ansgar Wiechers

Reputation: 200203

For the sake of completeness here's another solution in :

Set fso = CreateObject("Scripting.FileSystemObject")

Set infile  = fso.OpenTextFile("C:\infile.txt")
Set outfile = fso.OpenTextFile("C:\outfile.txt", 2, True)

If Not infile.AtEndOfStream Then outfile.Write infile.ReadLine
Do Until infile.AtEndOfStream
  outfile.Write " " & infile.ReadLine
Loop

infile.Close
outfile.Close

Upvotes: 1

Endoro
Endoro

Reputation: 37569

Using batch:

for /f "usebackqdelims=" %%i in ("infile.txt") do @<nul set /p"=%%i ">>"outfile.txt"
>>"outfile.txt" echo.

Upvotes: 5

Srikanth Venugopalan
Srikanth Venugopalan

Reputation: 9049

Something like this?

(gc C:\test.txt)  -join " "

Upvotes: 0

Magoo
Magoo

Reputation: 79982

@ECHO OFF
setlocal
(SET var=)
FOR /f "delims=" %%x IN (list.txt) DO (
CALL SET var=%%var%% %%x
)
SET var=%var:~1%
echo var=%var%=

Where list.txt is the file containing your lines and var is the variable into which you want the lines concatenated.

Upvotes: 8

Andy Arismendi
Andy Arismendi

Reputation: 52577

Using PowerShell give this a try and see if it's what you want:

$my_file = "C:\file.txt"
$out_file = "C:\out.txt"
(Get-Content -Path $my_file) -join " " | Set-Content -Path $out_file

Upvotes: 4

Related Questions