|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - Склеивание файлов в папках (желательно в bat, Но можно и ps) |
|
Любой язык - Склеивание файлов в папках (желательно в bat, Но можно и ps)
|
Пользователь Сообщения: 127 |
ОС: Win
Задача: склеить все файлы из папки в один. Подробности: существует большое кол-во папок, например "qqq1", "qqq1 1", "qqq1 2"... .... "qqq N", в них находятся файлы примерно с таким именем "3332.file1", "3339.file1", "3412.file1" и т.д. по возрастанию индекса в имени (прирост "рандомный"). нужен батник, который будет работать по всем папкам и склеивать (в порядке увеличения индекса) содержимое каждой в отдельный файл, т.е. из папки "qqq1 4" получится "FILE_qqq1 4.dat". примечание: папок и файлов очень много (на данный момент около 50 миллионов файлов по 18500 в каждой папке), желательно что бы можно было указать с какой папки начать и сколько папок будет учавствовать, дабы предотвратить зависания и прочие неприятности. P.S. эта же задача, но с решением на *NIX http://forum.oszone.net/thread-272030.html |
|
Отправлено: 12:55, 14-11-2013 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать |
Отправлено: 13:17, 14-11-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 127
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Цитата Iska:
ещё вопрос: Цитата Iska:
это с одной стороны критично, т.к. данных будет свыше 2тб и по оценке около 1 миллиарда файлов, т.е. процесс долгий. что бы в случае фейла (память забилась, диск отвалился, тачка зависла и проч ЧП в данной ситуации) не переделывать всё занаво или возиться с миграцией/удалением выполненых папок (что вообще очень не желательно, опасаюсь ошибок MFT, т.к. слишком много файлов), хотелось бы иметь возможность выбора среди обрабатываемых папок |
|||
Последний раз редактировалось Тишина, 14-11-2013 в 13:44. Отправлено: 13:36, 14-11-2013 | #3 |
Пользователь Сообщения: 127
|
Профиль | Отправить PM | Цитировать создам тему с подобной задачей в Linux, там на сколько я знаю нужно юзать cp/dd/cat (cat вроде как самое удачное для подобной задачи)
http://forum.oszone.net/showthread.p...06#post2254406 |
Отправлено: 13:53, 14-11-2013 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата Тишина:
|
||
Отправлено: 15:34, 14-11-2013 | #5 |
Пользователь Сообщения: 127
|
Профиль | Отправить PM | Цитировать Цитата Iska:
нет, есть все шансы что в одной из папок могут быть файлы типа qqq995 и следующий за ним qqq1003, т.е. как получится при сортировке по папкам. большую ясность внесу, индекс - имя файла, а расшерение у них у всех одно. но, думаю, это на многое влиять не будет. |
|
Отправлено: 16:40, 14-11-2013 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Тишина, жаль. Простой и быстрый вариант с «copy *.ext result» не состоится, поскольку первым окажется «qqq1003», а не «qqq995».
Цитата Тишина:
|
|
Отправлено: 18:15, 14-11-2013 | #7 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Вот как-то так:
$sRootPath = "E:\Песочница\0329" if(Test-Path -Path $sRootPath) { Get-ChildItem -Path $sRootPath | Where-Object -FilterScript { $_.PSIsContainer } | ForEach-Object -Process { Write-Host "[$($_.FullName)]" $List = (Get-ChildItem -Path "$($_.FullName)\*.*" -Include "*.file1") $List | Add-Member -MemberType ScriptMethod -Name BaseName2Num -Value {$this.BaseName -replace "^.*?(\d+)$", "`$1"} $List | Sort-Object -Property BaseName2Num | ` Get-Content -Encoding Byte -Read 4096 | ` Set-Content -Path (Join-Path -Path "$($_.FullName)" -ChildPath "FILE_$($_.Name).dat") -Encoding Byte } } |
Отправлено: 23:04, 14-11-2013 | #8 |
Пользователь Сообщения: 127
|
Профиль | Отправить PM | Цитировать сложная конструкция... спасибо, я попробую!
в данный момент я эксперементирую с циклом и cat под Linux, как только будет положительный результат - отпишу в родственную тему. |
Отправлено: 09:06, 15-11-2013 | #9 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Вывод в файл имен последних файлов в папках | ivanxam | Скриптовые языки администрирования Windows | 2 | 01-10-2013 13:26 | |
CMD/BAT - [решено] Удаление определенных файлов в конкретных папках | mrG0bliN | Скриптовые языки администрирования Windows | 6 | 03-06-2013 22:37 | |
Склеивание pdf файлов | Igor32123 | Хочу все знать | 4 | 06-12-2012 19:08 | |
CMD/BAT - [решено] "Склеивание" нескольких текстовых файлов | yaoleg2 | Скриптовые языки администрирования Windows | 2 | 21-09-2011 13:52 | |
Интерфейс - [решено] Как можно сменить рисунок, который появляется в папках с рисунками? | x_tasy | Microsoft Windows 2000/XP | 2 | 31-07-2008 12:14 |
|