Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] "Склеивание" нескольких текстовых файлов (http://forum.oszone.net/showthread.php?t=216128)

yaoleg2 21-09-2011 12:18 1757311

"Склеивание" нескольких текстовых файлов
 
Помогите создать один текстовый файл output.txt если в директории есть около десятка текстовых файлов типа 1*.txt+2*.txt+3*.txt и т.д.?

Раньше на Windows 98 использовал скрипт:
Код:

copy 1*.txt+2*.txt+3*.txt ... output.txt
но в Windows XP файл output.txt не создается если нет файла 1*.txt!
Потому что в рабочей директории не всегда есть файлы от 1*.txt+2*.txt+3*.txt ... , а файл output.txt создавать нужно из тех текстовых файлов которые есть в наличии.

Использовал скрипт:
Код:

@echo off
pushd c:\1
for %%j in (*.txt) do type "%%j" >> output.txt
popd
:: End_Of_Batch

но он обрабатывает вышеуказанные файла по несколько раз, а это неприемлемо!
Может кто подскажет КАК нужно написать скрипт, чтоб все файлы склеивались в один?

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

megaloman 21-09-2011 13:14 1757338

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

cd . >output.txt
copy /b output.txt+1*.txt+2*.txt+3*.txt ... output.txt

Недостаток - вставляется в конец файла output символ с кодом 1А Исправлено с учетом замечания SendMessage
Код:

cd . >output.txt
FOR %%f IN (3*.txt 1*.txt 2*.txt) DO Type "%%f" >>output.txt


SendMessage 21-09-2011 13:52 1757358

Цитата:

Цитата yaoleg2
файл output.txt создавать нужно из тех текстовых файлов которые есть в наличии. »

Никакой проблемы нет:
Код:

copy *.txt output.txt /b
Цитата:

Цитата megaloman
вставляется в конец файла output символ с кодом 1А »

megaloman, если копировать файлы как двоичные (ключ /b) - не будет вставляться.


Время: 09:14.

Время: 09:14.
© OSzone.net 2001-