[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
Иногда возникает необходимость сделать полностью автономный батник, не требующий внешних файлов.
Ресурсы можно встроить в сам батник используя Base64 кодирование, в приложенном файле демонстрируется эта возможность.
Работоспособен на winxp-win10.
Attachments

[Quote]

    dialmak
  • 2607
  • Longevity: 3 years 4 months
  • Posts: 1065
  • REPUTATION:40

    [+] [-]
nikzzzz, Base64 не самый удачный вариант - распирает. Вот если б сжать немного.. может через expand.

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
dialmak
Так Base64 не жмет, а наоборот увеличивает в 4/3 раза размер файла, в принципе, можно вообще бинарник к батнику приклеить, но проблемы с редактированием возникнут.
Можно написать Base128, но это не большой выигрыш, 8/7 вместо 4/3 , да и декодировать сложнее.
Пожать можно, но тогда придется создавать временные файлы, а этого делать не хочется.
А исполняемые, можно и UPX пожать.

[Quote]

    dialmak
  • 2607
  • Longevity: 3 years 4 months
  • Posts: 1065
  • REPUTATION:40

    [+] [-]
nikzzzz, Пишу, чтоб ты меня поправил, если я неправ.
- Первый вариант. Допустим есть файл, который можно сжать, типа картинки. Сжимаем через expand, кодируем в Base64. В батнике раскодируем и разжимаем. По идее должны что-то в размере выиграть.
- Второй вариант. Допустим есть файл, который нельзя сжать, типа exe-шник. Тут видимо никак. У меня 471 kb исходный, получился 630 Kb CMD. Хотя по идее CMD то сжать можно, но получим опять же exe-шник, что противоречит задаче.
Наверняка можно ещё как-то сделать, но у меня фантазии не хватает. Что-то наподобии как-то сжать Base64..
Кстати как TBS то сжимают, там выиграш в 3 раза, впрочем там текст, видимо там проще..

[Quote]

    dialmak
  • 2607
  • Longevity: 3 years 4 months
  • Posts: 1065
  • REPUTATION:40

    [+] [-]
Работоспособен на winxp-win10.
Это, если скрипты разрешены, есть всякие "оптимизаторы", которые их отключают. Поэтому желательна или проверка реестра или тупо включать и не проверять.

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
dialmak
Сжатый файл надо распаковывать, штатные средства - cab и zip, но при этом придется сначала распаковать файл из base64, а потом уже распаковать его из zip или cab.
К сожалению, встроенные архиваторы не поддерживают распаковку из потока, без временного файла не обойдешься.
По поводу картинок - форматы jpg и png сами являются архивами, паковать их не только нет смысла, но и вредно, размер при паковке растет.
Exe'шники неплохо пакуются Upx, их тоже паковать нет смысла.
Вот текстовые файлы действительно хорошо пакуются, но они обычно не очень большого размера, то-же паковка не даст большого выигрыша.
Можно, конечно написать свой архиватор, но распаковщик сам будет достаточно большого размера, да и изобретать велосипед лень.

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
57279или тупо включать
Если человек постится, зачем его насильно кормить? al
А в случае запрета скриптов окошко об этом и так при запуске вылезет, можно и не проверять. ae

[Quote]

    Ander_73
  • 15549
  • Longevity: 2 years 4 months
  • Posts: 1049
  • REPUTATION:76

    [+] [-]
57279Это, если скрипты разрешены
Добавлю 5 коп: и если вообще есть поддержка скриптов. Потому что, например, в WinPE её (поддержки скриптов) может не быть.

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
Ander_73
57282например, в WinPE её (поддержки скриптов) может не быть.
В WinPE может много чего не работать, софт предварительно проверяется сборщиком, а он уже решает, что делать, либо добавить поддержку скриптов, либо поправить батник.

[Quote]

    Ander_73
  • 15549
  • Longevity: 2 years 4 months
  • Posts: 1049
  • REPUTATION:76

    [+] [-]
57283софт предварительно проверяется сборщиком
Это всё понятно. Я к тому, что область применения такого решения ограничена "живой" системой, либо требует специальной проверки на запускаемость в конкретной WinPE.
---
... либо требует "допиливания" самой WinPE ag

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
Ander_73
К сожалению, батники практически не могут работать с бинарными данными, в штатных утилитах тоже особого выбора нет.
А под WinPe - там вообще своя специфика, можно и немного повозиться, я, например всегда поддерживаю WSH.
Да и вообще, эту тему затеял MBTY, я просто решил тряхнуть стариной, не помню, когда уж последний раз wsh скрипты писал. al

[Quote]

    Ander_73
  • 15549
  • Longevity: 2 years 4 months
  • Posts: 1049
  • REPUTATION:76

    [+] [-]
57285я, например всегда поддерживаю WSH
Я заметил bs
По счастью, сборки Xemom1 тоже требуют лишь незначительного "допиливания", буквально одну-две длл-ки вернуть на место - и порядок.
57285эту тему затеял MBTY
Да, отжог по полной. Сперва меня упрекнул в якобы использовании дополнительного софта, а потом сам безо всякой паузы выкатил отдельную утилиту. af

[Quote]

    MBTY
  • 1499
  • Longevity: 3 years 9 months
  • Posts: 70
  • REPUTATION:6

    [+] [-]
Ander_73, я до сих пор работал над всем этим, но попутно рождаются костыли, я делюсь ими, потому что в личку спрашивают и просят. Ну ок, не буду чо.
nikzzzz, колдун вы. Всегда считал вас темным магом, ей богу. Осталось затестить как эта дичь поведет себя на нескольких WinPE и я спокоен, хотя изначально именно использования на полноценных ОСях и нужно было. Спасибо большое.


Last edited by MBTY on 2018-09-08 13:47; edited 1 time in total

[Quote]

    nikzzzz
  • 215
  • Longevity: 4 years 5 months
  • Posts: 2660
  • REPUTATION:127

    [+] [-]
MBTY
57289Осталось затестить как эта дичь поведет себя на нескольких WinPE
Плохо себя поведет, даже если есть поддержка wsh, она обычно не полная, не все объекты поддерживаются, но там есть другие варианты, например Autoit есть практически во всех сборках, просто надо писать отдельные батники - под WinPe и обычную систему.

[Quote]

    dialmak
  • 2607
  • Longevity: 3 years 4 months
  • Posts: 1065
  • REPUTATION:40

    [+] [-]
nikzzzz, Немного полумав понял, что можно проще без Base64. Просто склеить через
copy /y /a "source.bat" + /b program.exe /b combined.bat
В батнике можно "расклеить" через findstr.
Проверил - 471 kb исходный, получился 471 kb с копейками, с Base64 630 kb
И не нужен cscript...
Короче ненужная утиль получилась.

Page 1 of 2


Display posts:    

Current time is: 27-Jun 00:00

All times are UTC + 3


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum