Иногда возникает необходимость сделать полностью автономный батник, не требующий внешних файлов. Ресурсы можно встроить в сам батник используя Base64 кодирование, в приложенном файле демонстрируется эта возможность. Работоспособен на winxp-win10.
dialmak Так Base64 не жмет, а наоборот увеличивает в 4/3 раза размер файла, в принципе, можно вообще бинарник к батнику приклеить, но проблемы с редактированием возникнут. Можно написать Base128, но это не большой выигрыш, 8/7 вместо 4/3 , да и декодировать сложнее. Пожать можно, но тогда придется создавать временные файлы, а этого делать не хочется. А исполняемые, можно и UPX пожать.
nikzzzz, Пишу, чтоб ты меня поправил, если я неправ. - Первый вариант. Допустим есть файл, который можно сжать, типа картинки. Сжимаем через expand, кодируем в Base64. В батнике раскодируем и разжимаем. По идее должны что-то в размере выиграть. - Второй вариант. Допустим есть файл, который нельзя сжать, типа exe-шник. Тут видимо никак. У меня 471 kb исходный, получился 630 Kb CMD. Хотя по идее CMD то сжать можно, но получим опять же exe-шник, что противоречит задаче. Наверняка можно ещё как-то сделать, но у меня фантазии не хватает. Что-то наподобии как-то сжать Base64.. Кстати как TBS то сжимают, там выиграш в 3 раза, впрочем там текст, видимо там проще..
Это, если скрипты разрешены, есть всякие "оптимизаторы", которые их отключают. Поэтому желательна или проверка реестра или тупо включать и не проверять.
dialmak Сжатый файл надо распаковывать, штатные средства - cab и zip, но при этом придется сначала распаковать файл из base64, а потом уже распаковать его из zip или cab. К сожалению, встроенные архиваторы не поддерживают распаковку из потока, без временного файла не обойдешься. По поводу картинок - форматы jpg и png сами являются архивами, паковать их не только нет смысла, но и вредно, размер при паковке растет. Exe'шники неплохо пакуются Upx, их тоже паковать нет смысла. Вот текстовые файлы действительно хорошо пакуются, но они обычно не очень большого размера, то-же паковка не даст большого выигрыша. Можно, конечно написать свой архиватор, но распаковщик сам будет достаточно большого размера, да и изобретать велосипед лень.
57282например, в WinPE её (поддержки скриптов) может не быть.
В WinPE может много чего не работать, софт предварительно проверяется сборщиком, а он уже решает, что делать, либо добавить поддержку скриптов, либо поправить батник.
Это всё понятно. Я к тому, что область применения такого решения ограничена "живой" системой, либо требует специальной проверки на запускаемость в конкретной WinPE. --- ... либо требует "допиливания" самой WinPE
Ander_73 К сожалению, батники практически не могут работать с бинарными данными, в штатных утилитах тоже особого выбора нет. А под WinPe - там вообще своя специфика, можно и немного повозиться, я, например всегда поддерживаю WSH. Да и вообще, эту тему затеял MBTY, я просто решил тряхнуть стариной, не помню, когда уж последний раз wsh скрипты писал.
Ander_73, я до сих пор работал над всем этим, но попутно рождаются костыли, я делюсь ими, потому что в личку спрашивают и просят. Ну ок, не буду чо. nikzzzz, колдун вы. Всегда считал вас темным магом, ей богу. Осталось затестить как эта дичь поведет себя на нескольких WinPE и я спокоен, хотя изначально именно использования на полноценных ОСях и нужно было. Спасибо большое.
Последний раз редактировалось: MBTY (2018-09-08 13:47), всего редактировалось 1 раз
57289Осталось затестить как эта дичь поведет себя на нескольких WinPE
Плохо себя поведет, даже если есть поддержка wsh, она обычно не полная, не все объекты поддерживаются, но там есть другие варианты, например Autoit есть практически во всех сборках, просто надо писать отдельные батники - под WinPe и обычную систему.
nikzzzz, Немного полумав понял, что можно проще без Base64. Просто склеить через copy /y /a "source.bat" + /b program.exe /b combined.bat В батнике можно "расклеить" через findstr. Проверил - 471 kb исходный, получился 471 kb с копейками, с Base64 630 kb И не нужен cscript... Короче ненужная утиль получилась.
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы