<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=13472&amp;type=atom" />
	<updated>2018-05-19T22:08:47Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=13472</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=125474#p125474" />
			<content type="html"><![CDATA[<p>Есть вариант ~55 байт одной строкой, чистый batch. Хранить файл в base64, там же или в сети. Всё только средствами системы и очень быстро.</p>]]></content>
			<author>
				<name><![CDATA[l8l]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=39272</uri>
			</author>
			<updated>2018-05-19T22:08:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=125474#p125474</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124017#p124017" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Но мне лень и нет времени разбираться с вычислением размеров файлов&lt;...&gt;.</p></blockquote></div><p>Про лень - солидарен, если пытаться сделать по образу makeself (тот самый sh+tar), то, думаю, лучше пойти по наиболее простому пути cab dropper&#039;а (или одному из решений выше).<br /></p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Интерес носит скорее академический характер</p></blockquote></div><p>И да, есть сразу минус, для своей сети/ПК вполне подойдёт, а в/на чужих возможны срабатывания антивирусов (замечено, что многие из них ныне работают очень туповато), т.к. такой техникой пользуются не только демокодеры, даже скорее - демокодеры уже давно не пользуются, в отличии от создателей malware.<br />Попробую что-нибудь придумать для себя, если результат будет мало-мальски напоминать makeself (unpack средствами ОС, packer можно и сторонний/самописный), то отпишусь здесь.<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;по особому мнению</div><div class="fancy_spoiler"><p>Нахожусь в схожей ситуации (вместо Cygwin - MSYS2, но разница - невелика, tmux, mutt, mc и w3m запустятся и там и там), целиком, правда не таскаю, достаточно dotfiles забэкапить.<br />Думаю мигрировать рабочее место в один из дистров Linux или FreeBSD, т.к. Powershell там есть и его, для моих задач, должно хватить. Но тут больше сказывается моя привычка к тайловым wm и tmux (первых под windows 7 нет, во всяком случае - &quot;вменяемых&quot;).</p></div></div>]]></content>
			<author>
				<name><![CDATA[UNDYING]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27822</uri>
			</author>
			<updated>2018-03-11T21:53:03Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124017#p124017</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124015#p124015" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>UNDYING пишет:</cite><blockquote><p>аналог sh с tar внутри</p></blockquote></div><p>Да, нечто подобное. Но мне лень и нет времени разбираться с вычислением размеров файлов, смещением от начала, таблицей размещения файлов и т.д. Интерес носит скорее академический характер - это можно сделать и на батниках (с примесью vbscript/jscript). </p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;особое мнение</div><div class="fancy_spoiler"><p>Предпочитаю использовать доступные средства и минимум утилит и программ извне. Но на своих машинах использую cygwin (он у меня очень давно гуляет от машины к машине - достаточно старенький, но при этом покрывает максимум моих потребностей). Ну и ФАР - с чужими и собственными макросами. Есть доступ к машинам, где даже cmd.exe нельзя запустить (только Проводник и несколько утилит для удаленного доступа) - и проблем тоже нет.</p></div></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2018-03-11T20:27:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124015#p124015</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=124013#p124013" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Есть интересное ответвление или дальнейшее развитие этой идеи: забыть о существующем ограничении (оно не требуется в начале, но о нем можно подумать позже) и создать эмулятор tar-файлов.</p></blockquote></div><p>Лет пять назад я бы вас поддержал, т.к. была идея &quot;запилить&quot; что-то подобное dpkg или же pacman для windows (идея иссякла в пользу WSUS и GPO).<br />Если забыть о существующем ограничении, то, как я понял, вас интересует аналог sh с tar внутри?<br />Если же просто self-extracted cab, то обычно используют extrac32.exe, он не сильно большой (~60 kB), хотя и его можно дотянуть до уровня аналога tar/rpm/deb.<br />Хотя... Попробую сам применить на работе - ребятам и девчатам (разного уровня владения ПК и инструментами ОС) требуется делать шары на ПК клиентов (естественно, с их позволения) с опр. правами, добавлять задачу планировщика и т.п. Можно завернуть в CMD/WSH/powershell (или даже - с проверкой установленных интерпретаторов и ОС), который положить в self-extracted cab.</p><div class="quotebox"><cite>Himmler пишет:</cite><blockquote><p>Товарищи, в очередной раз убеждаюсь, что всё уже было придумано до нас.</p></blockquote></div><p>Cab dropper? Ну да, много интересного гуглится.</p>]]></content>
			<author>
				<name><![CDATA[UNDYING]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27822</uri>
			</author>
			<updated>2018-03-11T17:28:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=124013#p124013</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123957#p123957" />
			<content type="html"><![CDATA[<p>Товарищи, в очередной раз убеждаюсь, что всё уже было придумано до нас.<br />Ещё в начале 2000-х этот трюк использовался в демосценах 1к и 4к, сейчас он уступил место оптимизирующему линкеру/пакеру crinkler (которым лично я в конце концов и воспользовался вместо изначальной задумки).<br />Так вот трюк в том, что внутри CAB-файла c 60-го байта идёт имя помещённого внутрь файла. Его-то и можно заменить на последовательность batch-команд, перед которыми идут байты 0A0D0A<br />Длину имени добавляемого файла следует выбирать равной суммарной длине batch-команд + 3 байта на 0A0D0A</p><br /><p>Как это работает:<br />-Требуемый файл помещается в CAB-архив (для лучшего сжатия применется алгоритм LZX)<br />-С 60-го байта пишется последовательность 0A0D0A и сами команды, например expand %0 1.txt&amp;start 1.txt<br />-Архив переименовывается в .bat и запускается</p><p>После запуска парсер командной строки находит заголовок CAB-архива MSCF, идущую за ним последовательность сырых байт, и упирается в написанный нами 0A0D0A.<br />Для него это признак конца команды, он пытается её исполнить и говорит, что не знает что такое &quot;MSCF&quot;, затем переходит к следующей команде.<br />А там лежат expand %0 1.txt&amp;start 1.txt, которые он и выполняет.<br />Далее для приличия можно дописать exit, распаковку во временную папку, удаление распакованного и прочее, но это уже детали.</p>]]></content>
			<author>
				<name><![CDATA[Himmler]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25902</uri>
			</author>
			<updated>2018-03-06T16:06:14Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123957#p123957</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123929#p123929" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, попробуйте создавалку из сообщения №16</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2018-03-05T16:00:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123929#p123929</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123923#p123923" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p>ЧЯДНТ ?</p></blockquote></div><p>Движок форума убирает переводы строки в конце кода. А он нужен для отделения пролога от прилепленного содержимого.</p>]]></content>
			<author>
				<name><![CDATA[shiz]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26249</uri>
			</author>
			<updated>2018-03-05T14:18:40Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123923#p123923</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123907#p123907" />
			<content type="html"><![CDATA[<p><strong>Himmler</strong>, хм... Вроде бы сделал как Вы сказали. Сложил в один каталог всё, что описано.</p><p>В итоге в папке имею:<br /><strong>a.bat</strong>		(с тем самым содержимым, как и было описано выше)<br /><strong>b.bat</strong>		(с тем самым содержимым, как и было описано выше)<br /><strong>123.exe</strong>	(переименованный для чистоты эксперимента notepad.exe)<br /><strong>test.bat</strong> с содержимым:<br /></p><div class="quotebox"><blockquote><p>copy/b a.bat+123.exe drop.bat</p></blockquote></div><p>Запускаю test.bat. <br />Вижу вот такой вывод:<br /></p><div class="quotebox"><blockquote><p>a.bat<br />123.exe<br />Скопировано файлов:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;1.</p></blockquote></div><p>Казалось бы всё отлично.</p><p>На выхлопе получаю <strong>drop.bat</strong> со включением кода распаковки:</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>cd/d &quot;%tmp%&quot;&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(%~z0).slice(109))&gt;.js&amp;cscript//nologo .js&lt;&quot;%~f0&quot;&gt;tMZђ &nbsp; &nbsp;&nbsp; &nbsp;яя&nbsp; ё&nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ш&nbsp; &nbsp;є ґ	Н!ёLН!This program cannot be run in DOS mode.</p><p>$&nbsp; &nbsp; &nbsp; &nbsp;?—ЗЈ{ц©р{ц©р{ц©рrЋ:рeц©р”Єсxц©р”сhц©р”¬сц©р”Ёс`ц©р{цЁрmч©р”Ўсfц©р”Vрzц©р”«сzц©рRich{ц©р&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PE&nbsp; d† «ОД &nbsp; &nbsp; &nbsp; &nbsp; р &quot; <br /> ђ&nbsp; R&nbsp; &nbsp; &nbsp;а“&nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; <br />&nbsp; &nbsp;<br />&nbsp; &nbsp;<br />&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {¬  `Б&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Шф D&nbsp; &nbsp;` ањ&nbsp; P Ь&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  &nbsp; pг T&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;PҐ&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; P¦ x	&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .text&nbsp; &nbsp;ОЏ&nbsp; &nbsp; &nbsp;ђ&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;`.rdata&nbsp; v&nbsp; &nbsp; &nbsp; x&nbsp; &nbsp;”&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; @.data&nbsp; &nbsp;-&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; А.pdata&nbsp; Ь&nbsp; &nbsp;P&nbsp; <br />&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; @.rsrc&nbsp; &nbsp;ањ&nbsp; `&nbsp; ћ&nbsp; &quot;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; @.reloc&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;А&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;@&nbsp; B&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; HѓмHLЌB‹КHЌ·У E3Й+ИЉЇЧ ¶H‹T$xБаБH‰T$(‰D$0A· ‰D$4I‹@IѓА<br />H‰D$8H‹J H‰H‹@ ·L‰B‰JЗB&nbsp; &nbsp;A· E3А‰B‹D$pЗB&nbsp; &nbsp;HЌT$0H‹<br />&amp; ‰D$ я– HѓДHГМММММММ@SHѓм@L‹”$Ђ&nbsp; &nbsp;H‹ЩM…Тt\L‹\$p‹В…Тt#ѓшu&quot;A¶Иё &nbsp; яБM‰JE„АM‰ZEБA‰лAѓ&quot; <br />.....</p></div></div><p>Но при запуске <strong>drop.bat</strong> моргнуло окно консоли и тишина. Решил посмотреть что этот зверь пишет в консоль...</p><p>Запустил <strong>cmd</strong>, перешёл в каталог где лежат файлы через <strong>cd</strong></p><p>Стартанул...</p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header" data-lang-open="открыть спойлер" data-lang-close="скрыть спойлер"><strong>+</strong>&nbsp;открыть спойлер</div><div class="fancy_spoiler"><p>C:\test&gt;cd/d &quot;C:\Users\User\AppData\Local\Temp&quot;&nbsp; &amp; echo WScript.StdOut.Write(WScript.StdIn.Read(246892).slice(109)) 1&gt;.js&nbsp; &amp; cscript//nologo .js 0&lt;&quot;C:\test\drop.bat&quot; 1&gt;tMZР$$4A╕Ь<br />Синтаксическая ошибка в имени файла, имени папки или метке тома.</p></div></div><p> </p><p>ЧЯДНТ ? O_o</p><p>P.S У меня Win 10 Pro, если что.</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-03-04T16:12:53Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123907#p123907</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123869#p123869" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, ну так к созданному батнику нужно прилепить желаемый бинарник, а именно<br /></p><div class="codebox"><pre><code>copy/b a.bat+123.bin drop.bat</code></pre></div><p>в результате даст батник, запуск которого приводит к созданию отдельно лежащего файла, содержимое которого полностью совпадает с 123.bin.</p><p>Либо же для добавленного в CAB-архив exe-шника (123.exe лежит внутри 123.cab)<br /></p><div class="codebox"><pre><code>copy/b b.bat+123.cab drop.bat</code></pre></div><p>в результате даст батник, запуск которого приводит к созданию отдельно лежащего файла, содержимое которого полностью совпадает с 123.exe c последующим его запуском</p>]]></content>
			<author>
				<name><![CDATA[Himmler]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25902</uri>
			</author>
			<updated>2018-02-28T21:11:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123869#p123869</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123845#p123845" />
			<content type="html"><![CDATA[<p><strong>Rumata</strong>, так общую идею то я уловил. Я не понял как использовать bat файлы.<br />1) Создал <strong>a.bat</strong> c содержимым:<br /></p><div class="codebox"><pre><code>
cd/d &quot;%tmp%&quot;&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(%~z0).slice(109))&gt;.js&amp;cscript//nologo .js&lt;&quot;%~f0&quot;&gt;t
</code></pre></div><p>2) Создал <strong>b.bat</strong> c содержимым:<br /></p><div class="codebox"><pre><code>
cd/d &quot;%tmp%&quot;&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(%~z0).slice(134))&gt;.js&amp;cscript//nologo .js&lt;&quot;%~f0&quot;&gt;t&amp;expand t .exe&amp;start .exe
</code></pre></div><p>А дальше как планируется это использовать ?</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-02-27T20:36:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123845#p123845</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123844#p123844" />
			<content type="html"><![CDATA[<p><strong>Xameleon</strong>, у меня немного другое видение проблемы. Оно чуть отличается от того как видит ее <strong>Himmler</strong>. </p><p>Есть некие данные (бинарный файл), который надо &quot;завернуть&quot; в пакетный файл, который при запуске вытаскивает бинарные данные и при необходимости распаковывает их. По всей видимости, на системах товарища <strong>Himmler</strong> этого достаточно. Есть важное ограничение - размер пакетного распаковщика не должна превышать 300 байт (я его плохо понял, но поиграть при таких жестких условиях было интересно). Мне кажется, есть некоторая проблема распространения таких файлов - многие почтовые серверы &quot;режут&quot; вложения с расширением &quot;.cmd&quot; или &quot;.bat&quot;. </p><p>Есть интересное ответвление или дальнейшее развитие этой идеи: забыть о существующем ограничении (оно не требуется в начале, но о нем можно подумать позже) и создать эмулятор tar-файлов. </p><p>Касательно моих изысков. Мое предыдущее сообщение содержит скрипт, который при запуске подхватывает имя некоторого файла, копирует его в другой, добавляя в начало пролог. При запуске результирующий файл вытаскивает исходный файл.</p>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2018-02-27T18:07:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123844#p123844</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123842#p123842" />
			<content type="html"><![CDATA[<p><strong>Himmler &amp; Rumata</strong>, господа, очень захотелось &quot;покурить&quot;, то что курили вы, но к своему стыду, не смог понять как этим воспользоваться. <img src="//forum.script-coding.com/img/smilies/roll.png" width="15" height="15" /><br />Если не очень затруднительно, можете мануальчик набросать ?</p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2018-02-27T13:52:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123842#p123842</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123807#p123807" />
			<content type="html"><![CDATA[<p>Кое-что поправил, кое-что убрал, в итоге остановился на этом:<br /> -Убрал имя js-файла (оно необязательно, а вот расширение нужно, для exe - то же самое).<br />-%tmp% действительно нужно в кавычки.<br />-Размер теперь неограничен.</p><p>109 байт - выгружатор<br /></p><div class="codebox"><pre><code>
cd/d &quot;%tmp%&quot;&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(%~z0).slice(109))&gt;.js&amp;cscript//nologo .js&lt;&quot;%~f0&quot;&gt;t

</code></pre></div><p>134 байта - выгружатор+разжиматор+запускатор<br /></p><div class="codebox"><pre><code>
cd/d &quot;%tmp%&quot;&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(%~z0).slice(134))&gt;.js&amp;cscript//nologo .js&lt;&quot;%~f0&quot;&gt;t&amp;expand t .exe&amp;start .exe

</code></pre></div><p>Кроме того, обнаружил, что создание CAB архива по алгоритму LZX позволяет вплотную приблизиться к уровню сжатия 7z и zip (разница в моём случае около 40 байт).</p><p>В итоге я выиграл у лучшего пакера больше 200 байт (получилось 2,72 Кб), а это отличный результат.<br />Очень благодарен товарищу <strong>Rumata</strong> за идею с StdIn/StdOut.</p>]]></content>
			<author>
				<name><![CDATA[Himmler]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25902</uri>
			</author>
			<updated>2018-02-22T17:23:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123807#p123807</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123801#p123801" />
			<content type="html"><![CDATA[<p>Ага! Вы ухватили идею. Но! <br />1.<strong> %tmp%</strong> надо в кавычки, потому что могут быть пробелы и другие символы.<br />2. отсутствует код выхода <strong>exit/b</strong><br />3. В командной строке перенесет в каталог <strong>%tmp%</strong>, что может быть нежелательно. <br />4. Неудобно - результирующий файл не имеет осмысленное имя.</p><p>Интересная у Вас трава. Не отпускает. Но я бы остановился на размере в <strong>131 байт</strong>:</p><div class="codebox"><pre><code>
@pushd &quot;%TMP%&quot;&amp;echo:W=WScript;W.StdOut.Write(W.StdIn.Read(%~z0).slice(131))&gt;t.js&amp;cscript//nologo t.js&lt;&quot;%~f0&quot;&gt;&quot;%~dpn0&quot;&amp;popd&amp;exit/b
</code></pre></div><p>А это его создавалка. Способ использования в подсказке:</p><div class="codebox"><pre><code>
@echo off

if &quot;%~1&quot; == &quot;&quot; (
	echo:Usage %~n0 FILE [/C]
	echo:/C means to create a copy
	goto :EOF
)

setlocal
set &quot;ZC=&quot;
if /i &quot;%~2&quot; == &quot;/c&quot; set &quot;ZC=-copy&quot;
set &quot;ZI=%~f1&quot;
set &quot;ZO=%~dpn1%ZC%%~x1.bat&quot;
call :create-prolog &quot;000&quot; &gt;&quot;%ZO%&quot;
for %%f in ( &quot;%ZO%&quot; ) do call :create-prolog %%~zf &gt;&quot;%ZO%&quot;
copy /y /b &quot;%ZO%&quot;+&quot;%ZI%&quot; &quot;%ZO%&quot;
goto :EOF

:create-prolog
echo:@pushd &quot;%%TMP%%&quot;^&amp;echo:W=WScript;W.StdOut.Write(W.StdIn.Read(%%~z0).slice(%~1))^&gt;t.js^&amp;cscript//nologo t.js^&lt;&quot;%%~f0&quot;^&gt;&quot;%%~dpn0&quot;^&amp;popd^&amp;exit/b
goto :EOF
</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2018-02-21T15:31:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123801#p123801</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Хранение файлов внутри bat-файла и их выгрузка]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=123800#p123800" />
			<content type="html"><![CDATA[<p>А вот извольте-ка посмотреть</p><p>109 байт - выгружатор<br /></p><div class="codebox"><pre><code>
cd/d %tmp%&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(9999).slice(109))&gt;t.js&amp;cscript//nologo t.js&lt;&quot;%~f0&quot;&gt;t

</code></pre></div><p>136 байт - выгружатор+разжиматор+запускатор<br /></p><div class="codebox"><pre><code>
cd/d %tmp%&amp;echo WScript.StdOut.Write(WScript.StdIn.Read(9999).slice(136))&gt;t.js&amp;cscript//nologo t.js&lt;&quot;%~f0&quot;&gt;t&amp;expand t 1.exe&amp;start 1.exe

</code></pre></div><p>В конце строки - символ 0xA (одного его достаточно)<br />Файлы до 9999 байт (именно на таких нужна экономия в 100-200 байт).</p><p>Да, пришлось выкинуть кусок с удалением временных файлов, плюс все имена теперь фиксированные.</p><br /><p>Добавление в ZIP вместо CAB в моём случае даёт ещё примерно 120 байт выигрыша, но распаковщик из ZIP через Shell.Application, скорее всего, съест всё преимущество.</p>]]></content>
			<author>
				<name><![CDATA[Himmler]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25902</uri>
			</author>
			<updated>2018-02-21T12:41:27Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=123800#p123800</id>
		</entry>
</feed>
