![]() |
Скрипт для разбиения файла на части
Скрипт позволяет разбивать файл на части, которые в последствии можно объеденить с помощью пакетного
файла без нарушения внутреннего форматирования (см. команда Copy /?). После разбиения, скрипт создаёт пакетный файл "Combine all parts.bat" в том же директории куда копируются части. P.S. Надеюсь это кому нибудь пригодится. :) |
Ничё так... молодец! сам придумал ?
PS. Каскрась код в цветной (утилита Au3ToPst) |
FlatX007, Если он разукрасит этот код, то у него возникнет ошибка. Слишком много символов для размещения на форуме :)
Только не вижу смысла в создании других MSgBox и FileOpenDialog Объясните зачем, а? |
Цитата:
Цитата:
|
Цитата:
_WinAPI_GetOpenFileName() строка ~3101 Да только непонятно зачем это #include <WinAPI.au3> =) |
Да, думаю действитель лучше убрать их (лишние запчасти) а про штатный MsgBox я совсем забыл что там последний параметр это hwnd окна. - Сегодня исправлю.
Цитата:
|
Поправил кое-что, теперь пакетный файл будет создаваться в DOS кодировке, это позволит избежать проблем с кириллицей в именах файлов.
|
Цитата:
И ещё, почему бы не создавать папку, вместо того, чтобы писать, что она не сущесвтует. И почему она обязательно должна ыбть пуста? |
Цитата:
Цитата:
Цитата:
|
Цитата:
Код:
3.3.1.0 (20th May, 2009) (Beta) |
Diamond, есть одно замечание: желательно упомянуть, что слияние отдельных частей созданным пакетным файлом желательно производить на разделе с файловой системой NTFS, поскольку именно там записи о файлах в MFT хранятся в упорядоченном виде, именно в таком порядке они будут возвращаться по FindFirst/NextFile и обрабатываться командой «copy …».
На файловых системах FATxx (FAT16/FAT32; насчёт FAT12, полагаю, озадачиваться сим бессмысленно даже теоретически :), на exFat не проверялось) обработка будет идти в порядке создания записей файлов в каталоге, что может привести к неверным результатам слияния на разделах с этими файловыми системами. Вероятность этого исчезающе мала, но, тем не менее, существует. |
Iska, У меня на FAT32 объединяются без проблем, на NTFS проверить не могу(диск полностью "забит")
Изначально создаваемый пакетный файл не использовал подставные символы т.е. каждое имя части указывалось точно(part1+part2+... и т.д.), но в этом случае может возникнуть ошибка из-за ограничения на длину строки в пакетном файле. Ещё у меня возникала мысль использовать цикл "For" (в пакетном файле) чтобы обойти это ограничение но я отказался от этой идеи. |
Цитата:
Вы отказались, а я сделал как раз с «FOR /L», и результат оказался весьма удручающ (на больших объёмах/количествах частей время росло в геометрической прогрессии, хотя, конечно, можно было и тут несколько сократить время, используя слияние попарно, но я этого не стал делать). Цитата:
В любом случае — отдельное спасибо: как бы то ни было, а Вы своим скриптом помогли мне осознать своё искреннее заблуждение в этом вопросе (что делать «copy /b *.parts …» всё-таки можно, выполнив предварительно некоторые телодвижения). |
Iska, Спасибо за подробное разъяснение ошибки слияния!
Отдельное спасибо за рабочий пример, имхо, главная привлекательность этой идеи, как раз и заключается в использовании пакетного файла. +5 |
Люди подскажите а как таким же с помобом с помощью bat разбить файл на несколько маленьких, после определенного слова например конец?
Очень нужно |
Есть большой HTML файл. Одного текста только почти на 30 мегабайт. Разные части текста в файле разделены тегами-комментариями, например <!-- Post --> тут сам текст <!-- # Post -->.
Нужно каждую часть между этими тегами сохранить в отдельный файл. Имя файла не имеет значения, можно даже просто цифрами по порядку. Сидеть и копипастить уже заморился, а таких файлов несколько. |
STARSsoft,
FileOperations.au3 Код:
#include <FileOperations.au3> |
STARSsoft, перечитал твой пост. Я ошибся, тот вариант использует текст как разделитель. Вот обычное регулярное выражение, которое возвратит текст между тегами в массив.
Код:
#include <FileOperations.au3> |
Время: 12:25. |
Время: 12:25.
© OSzone.net 2001-