it-swarm.com.ru

Пакет Windows - объединить несколько текстовых файлов в один

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

type *.txt > merged.txt

Но требование заключается в том, чтобы «объединить файлы одного дня в файл day_YYYY-DD-MM.txt». Я - пользователь Linux, и пакет Windows является для меня адом. 

Правка: его Windows XP

14
SpeedEX505

В основном, объединение файлов из пакетного файла выполняется с помощью «copy».

copy file1.txt + file2.txt + file3.txt concattedfile.txt
19
Lance

Поместите все файлы, которые необходимо скопировать, в отдельную папку, для удобства разместите их на диске c.

Откройте командную строку - windows> введите cmd> выберите командную строку.

Вы можете видеть указание каталога по умолчанию - Пример: C: [имя_папки]> . Измените каталог, чтобы он указывал на папку, в которую вы поместили файлы для копирования, с помощью команды 'cd [Folder_Name]'.

После указания на каталог - введите «dir», который показывает все файлы, присутствующие в папке, просто чтобы убедиться, что все на месте.

Теперь введите: «copy * .txt [newfile_name] .txt» и нажмите ввод.

Готово!

Весь текст в отдельных файлах будет скопирован в [newfile_name] .txt

6
Kingsman

Команда типа Windows работает аналогично UNIX cat.

Пример 1: Объединить с именами файлов (Это объединит file1.csv & file2.csv для создания concat.csv)

type file1.csv file2.csv > concat.csv

Пример 2: Объединить файлы с шаблоном (это объединит все файлы с расширением csv и создаст concat.csv)

type  *.csv > concat.csv
3
XEngineer

Попробуй это:

@echo off
set yyyy=%date:~6,4%
set mm=%date:~3,2%
set dd=%date:~0,2%

set /p temp= "Enter the name of text file: "
FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%temp%.txt

Этот код просит вас задать имя файла после «day_», где вы можете ввести дату . Если вы хотите назвать свой файл как фактическую дату, вы можете сделать это:

FOR /F "tokens=* delims=" %%x in (texto1.txt, texto2.txt, texto3.txt) DO echo %%x >> day_%yyyy%-%mm%-%dd%.txt
1
Fernando Madriaga

Мы можем использовать обычную команду CAT для объединения файлов .. 

D:> cat * .csv> output.csv

0
Sadheesh

Вы можете сделать это, используя тип: 

type"C:\<Directory containing files>\*.txt"> merged.txt

все файлы в каталоге будут добавлены в файл merged.txt.

0
Elenasys

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

Пример 1 (файлы в одной папке):

copy file1.txt+file2.txt+file3.txt file123.txt

Пример 2 (файлы в одной папке):

type *.txt > combined.txt

Пример 3 (файлы существуют в нескольких папках, предполагается, что newfileoutput.txt не существует):

for /D %f in (folderName) DO type %f/filename.txt >> .\newfileoutput.txt
0
Gigasoup

cat "входные файлы"> "выходные файлы" 

Это работает в PowerShell, который является предпочтительной оболочкой Windows в текущих версиях Windows, поэтому он работает. Это также единственная версия приведенных выше ответов для работы с большими файлами, где «type» или «copy» завершаются неудачно.

0
Stephen