2015-05-26 2 views
8

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

type *.txt > merged.txt 

Но требование «конкатенацию файлов с тем же дня в файл day_YYYY-DD-MM.txt» Я линукс пользователь и окно пакетной ад для меня.

EDIT: Ее Windows XP

+0

Вы должны сообщить нам, если это должно быть сделано в «реальном» пакетный файл или если PowerShell/Windows Scripting хост доступен. Для начала вам следует указать, какая версия Windows должна поддерживаться (минимальная/максимальная) – Marged

+0

Его окна XP, так что нет powershell – SpeedEX505

+0

Вам понадобится прекрасная команда FOR, чтобы сделать это: http://stackoverflow.com/questions/ 9234207/поиск по дате-с использованием-командной строки. Лично я не буду возиться с такими вещами в партии. Даже если вы можете заставить его работать, типы объектов, которые вы можете использовать, ограничены - Powershell - это путь. –

ответ

8

На самом базовом, конкатенации файлов из пакетного файла осуществляется с «копией».

copy file1.txt + file2.txt + file3.txt concattedfile.txt 
+1

Я пробовал копировать * .xyz all.bin, но полученный файл all.bin содержал только подмножество xyz-файлов в этом каталоге. Я не понимаю, почему в них не было всех. Необходим ли синтаксис плюса? Если это так неудобно для большого количества файлов. – DaveInCaz

+0

Я только что создал пример по вашим спецификациям, и он вел себя так, как ожидалось. Я создал «1.xyz», «2.xyz» и «3.xyz». Затем запустил «copy * .xyz all.bin», и в результате «all.bin» содержалось содержимое всех 3 файлов. Поэтому я не знаю, почему это не работает для вас. – Lance

+0

благодарим вас за тестирование. Мне придется экспериментировать дальше, чтобы попытаться найти причину! – DaveInCaz

1

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

@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

Результат вашего ответа зависит от локальных настроек системы. – Endoro

-1

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

D:>кошка * .csv> выходы. csv

+0

В Windows нет CAT. – Yarik

+0

Некоторые пакеты, такие как Git, поставляются с котом, возможно, он принял его за команду DOS. – DaveInCaz

5

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

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

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

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

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

Выполнено!

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

+0

Кажется, добавляет лишний символ 0x1A в конец результирующего файла, который, если я помню из обратного назад-bad-old-days, был «control Z», конец знака файла. – ALEXintlsos

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