Ответ 1
В самом основном, конкатенирование файлов из пакетного файла выполняется с помощью 'copy'.
copy file1.txt + file2.txt + file3.txt concattedfile.txt
Мне нужно создать script, который объединяет несколько текстовых файлов в один. Я знаю его простой в использовании
type *.txt > merged.txt
Но требование - "объединить файлы с того же дня в файл day_YYYY-DD-MM.txt". Я - пользователь linux и пакет для Windows - это ад для меня.
EDIT: его Windows XP
В самом основном, конкатенирование файлов из пакетного файла выполняется с помощью 'copy'.
copy file1.txt + file2.txt + file3.txt concattedfile.txt
Команда type
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
Поместите все файлы, которые нужно скопировать в отдельной папке, для удобства размещения их на диске c.
Откройте командную строку - windows > введите cmd > выберите командную строку.
Вы можете увидеть каталог по умолчанию - Ex: C: [Folder_Name] > . Измените каталог, чтобы указать папку, в которую были скопированы файлы, с помощью команды "cd [Folder_Name]".
После указания на каталог - введите 'dir', который отобразит все файлы, присутствующие в папке, чтобы убедиться, что все на месте.
Теперь введите: 'copy *.txt [newfile_name].txt' и нажмите enter.
Готово!
Весь текст в отдельных файлах будет скопирован в [newfile_name].txt
Я повторяю некоторые другие уже высказанные замечания, но включаю третий пример, который помогает, когда у вас есть файлы в папках, которые вы хотите объединить.
Пример 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
Попробуйте следующее:
@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
Вы можете сделать это, используя тип:
type"C:\<Directory containing files>\*.txt"> merged.txt
все файлы в каталоге будут добавлены в файл merged.txt
.
Мы можем использовать обычную команду CAT для объединения файлов.
D: > cat *.csv > outputs.csv
cat "входные файлы"> "выходные файлы"
Это работает в PowerShell, которая является предпочтительной оболочкой Windows в текущих версиях Windows, поэтому она работает. Это также единственная версия приведенных выше ответов для работы с большими файлами, где "type" или "copy" завершаются неудачно.