Split'n'join

Здесь обсуждаются темы, косвенно связанные с Far.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Split'n'join

Post by John Doe »

Latest post of the previous page:

HaRT wrote: у него и SFX делается по такому же принципу: подклеиванием архива к распаковщику.
Был уверен, что так же поступают и остальные архиваторы.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Split'n'join

Post by Wave »

Провёл пару экспериментов. Заархивировал в пару томов в зип и склеил копированием — архив распаковался как миленький.
Заархивировал в пару томов 7зип без сжатия, склеил архив копированием и прямо в редакторе фара удалил 7зип-заголовок и хвост архива. Что-то не очень хорошо получилось, разница с исходным файлом в один байт. Но вообще файл (картинка) открывается любой картинкогляделкой без проблем.
Конечно, реально я не буду в редакторе отрезать заголовок, а открою в архиваторе. Но так, типа… сам факт.

И вообще, уболтали, вполне можно архиватором это дело делать и не морочиться с поиском подходящей сплит-джоинилки.

P.s. Обнаружил ещё одну занятную особенность, в зип и 7зип нельзя бить архивы на куски меньше 64 кб. Это я хотел для большей наглядности вышеописанный эксперимент на текстовом файле провести.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Split'n'join

Post by John Doe »

Wave wrote: И вообще, уболтали, вполне можно архиватором это дело делать и не морочиться с поиском подходящей сплит-джоинилки.
Ну это уже перебор )
Есть же

Code: Select all

Usage: split [OPTIONS] [INPUT [PREFIX]]

        -b N[k|m]       Split by N (kilo|mega)bytes
        -l N            Split by N lines
        -a N            Use N letters as suffix
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Split'n'join

Post by Wave »

John Doe

Code: Select all

"split" не является внутренней или внешней           
командой, исполняемой программой или пакетным файлом.
Я же почему и завёл эту тему — спросить, какой именно сплит кто-то может посоветовать, чтобы работал из ком-строки, резал гигабайты, имел исполняемый файл, который можно кинуть в %FARHOME%\TOOLS\
ccaid wrote:утилита split из *nix — как раз на эту тему. остается подобрать win-порт. например, gow.
Скачал. Достал оттуда split.exe. Сначала оно пожаловалось на отсутствие libintl3.dll, достал оттуда же. Потом на отсутствие libiconv2.dll — аналогично. Потом после запуска из фара долго и молча висело, пока я не нажал CtrlC. Потом
D:\>split.exe /?
D:\split.exe: /?: Invalid argument

D:\>split.exe /help
D:\split.exe: /help: No such file or directory
D:\>split.exe -b 7m Gow-0.8.0.exe
выдало мне два файла xaa и xab. Проверять, поддерживает ли эта штука большие файлы, уже что-то не хочется.

P.s. С префиксом разобрался, хотя файлы gow.exeaa и gow.exeab повеселили. И ладно, проверю большие файлы — режет — гляну результат.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Split'n'join

Post by John Doe »

Wave wrote: какой именно сплит кто-то может посоветовать
Подсказать не могу, но в шапке темы по unix-утилитам что-то есть: http://forum.farmanager.com/viewtopic.php?f=20&t=3153
(в частности я пользуюсь утилитами busybox)
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

Split'n'join

Post by ccaid »

Wave wrote: Потом после запуска из фара долго и молча висело, пока я не нажал CtrlC
это же юникс, у них свои правила. при пустой ком. строке он ждет входной файл из stdout. а описание вызова у них принято получать по ключу --help
Wave wrote: какой именно сплит кто-то может посоветовать
нет сплита лучше, чем exfat
Фар делают добрые люди
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Split'n'join

Post by Wave »

Тему для себя закрыл — split из набора gow и работает из консоли, и поддерживает большие файлы. Проверил результат по crc32.

split.lua

Code: Select all

Macro {
  area = "Common"; key = "split-file"; description = "Panel: разделить файл на части"; action = function()
    sz = "1536m"; -- По дефолту полтора гига
    nf = prompt("Выходной размер для деления файла", sz, 0x01, sz);
    if nf ~= false then
      Keys("CtrlG");
      S = "%FARHOME%\\TOOLS\\split\\split.exe" .. [[ "!.!" -b ]] .. nf .. [[ "!.!."]];
      print(S);
      Keys("Enter");
    end;
  end
}
Пункт пользовательского меню

Code: Select all

lua: eval("split-file", 2);
Режет на части указанного размера текущий файл или выделенные файлы. По дефолту себе поставил полтора гига. Пробелы в путях и именах файлов обрабатываются. Что-нибудь типа временной панели — не проверял. Какие-ть ещё пограничные случаи тоже не проверял. split.exe, libiconv2.dll и libintl3.dll кинул сами видите куда.

P.s. В энциклопедии написано, что prompt при нажатии Esc возвращает 0, но проверять приходится на false.
Пользуюсь ФАРом больше 20 лет © собирательный.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Split'n'join

Post by John Doe »

http://www.ltr-data.se/files/fsplit32.zip
http://www.ltr-data.se/files/win64/fsplit3264.zip

Code: Select all

File split program by Olof Lagerkvist.
http://www.ltr-data.se          olof@ltr-data.se
This program splits large files into smaller pieces.

  Syntax:
fsplit32 bigfile [partfile [partsize]]

bigfile      Input file to split into smaller pieces.

partfile     Name template for part files. Actual files will get this name,
             suffixed by .nnn, where nnn is number of file. If this parameter
             is not specified, it is built automatically from input file name.

partsize     Size of each part file.

To reassemble the original file, you can for example use the COPY command with
the /B switch.
Example: COPY /B partfiles.* bigfile
Post Reply

Return to “Операционные системы, командные оболочки и прочее”