2013-03-17 2 views
1

У меня есть несколько стандартных текстовых файлов, которые следуют за этим форматом, с различным количеством строк в каждом файле:Как объединить несколько строк в одном текстовом файле в одну строку, в Windows?

Line1 
Line2 
Line3 
Line4 

Я хочу, чтобы объединить все строки в одну, с пробелом между каждым набором символов, так текстовый файл будет выглядеть следующим образом:

Line1 Line2 Line3 Line3 

... и так далее. Это необходимо для работы с любым количеством строк, из-за того, что каждый текстовый файл содержит другое количество строк. Мое намерение - не, чтобы объединить строки в текстовых файлах; Я хочу, чтобы каждый текстовый файл оставался отдельным. Все решения, которые я нашел в Интернете, либо не соответствуют этому, либо работают исключительно с UNIX. Я запускаю Windows 7. Это можно сделать в Powershell, VBS, Batch, конкретной программе, не имеет значения, просто нужно работать с Windows.

Большое спасибо!

ответ

5

Использование пакетного:

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

Также отлично работает, благодаря кучу! – WafflesAteMyMother

+0

Endoro, вы знаете, как это сделать? Например, заставьте одну строку стать несколькими строками (каждый элемент, разделенный пробелами, получает свою собственную строку). – Cornbeetle

+0

@Cornbeetle Да, пакет может обрабатывать это, но строка (input-) в партии может содержать не более 8191 символов. – Endoro

4

Использование PowerShell дать это попробовать и посмотреть, если это то, что вы хотите:

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

отлично работает , огромное спасибо! – WafflesAteMyMother

2
@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%= 

Где list.txt это файл, содержащий ваши строки и вар переменная, в которую вы хотите, чтобы линии каскадного ,

+0

Спасибо, это было очень полезно. – thebunnyrules

0

Что-то вроде этого?

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

Установите Cygwin, то вы можете сделать

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

Ради полноты вот еще одно решение в :

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 
+0

Хорошее намерение, но можем ли мы читать/писать одновременно в одном файле? Кроме того, у меня есть ошибка времени выполнения # 54 «Плохой режим файла» в строке: 6 Char: 34, и я уверен, что 'outfile' открыт с по умолчанию iomode' ForReading'. Но даже исправляя это, мы сначала прочитали весь контент перед тем, как писать, иначе мы потеряем весь контент файла, согласитесь? ;) –

+0

@PanayotKarabakalov Извините, скопируйте/вставьте ошибку. Конечно, 'outfile' должен был быть другим файлом. –

+0

И я полагаю, что это опечатка, но не была уверена. Рад видеть, что вы его исправили. –

Смежные вопросы