<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=16685</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16685&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"».]]></description>
		<lastBuildDate>Sat, 30 Oct 2021 18:36:11 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150313#p150313</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Ради спортивного интереса?</p></blockquote></div><p>Общего развития. Повторюсь, откроете много интересного. В том числе не связанного с SQL, как бы странно это ни звучало.</p>]]></description>
			<author><![CDATA[null@example.com (greg zakharov)]]></author>
			<pubDate>Sat, 30 Oct 2021 18:36:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150313#p150313</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150308#p150308</link>
			<description><![CDATA[<div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>Толи ирония, толи сарказм</p></blockquote></div><p>НИ то, ни другое. <br /></p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>SQLite. Последний, к слову, лично применяется</p></blockquote></div><p>Просто отдал Вам на более детальное тестирование.</p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>заставить командный сценарий вызвать себя как сценарий SQL</p></blockquote></div><p>Ради спортивного интереса? Типа, &quot;а вот как мы умеем&quot;? Можно, но пока лениво. Надо же вникать в некоторые тонкости синтаксиса SQL вообще и SQLite в частности.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 29 Oct 2021 18:38:18 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150308#p150308</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150307#p150307</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Несложно.</p></blockquote></div><p>Вы не поняли: не передать что-либо через пайп, а заставить командный сценарий вызвать себя как сценарий SQL. Если интересно, поэкспериментируйте и вы откроете для себя массу интересного.<br /></p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>На более сложных запросах не тестировал - оставляю это Вам.</p></blockquote></div><p>Толи ирония, толи сарказм... <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (greg zakharov)]]></author>
			<pubDate>Fri, 29 Oct 2021 18:08:36 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150307#p150307</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150294#p150294</link>
			<description><![CDATA[<div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>можно включить. Как и SQLite</p></blockquote></div><p>Несложно. Полагаю, что sqlite3 в этом коде можно заменить на другой движок (например, mysql и т.д.).</p><div class="codebox"><pre><code>
@echo off
for /f &quot;tokens=1 delims=:&quot; %%n in ( &#039;findstr /n /r /c:&quot;^-- SQL --&quot; &quot;%~f0&quot;&#039; ) do (
	cmd /c &quot;for /f &quot;usebackq skip=%%n tokens=* eol=&quot; %%s in ( &quot;%~f0&quot; ) do @echo:%%s&quot; | sqlite3 %*
	goto :EOF
)
goto :EOF
-- SQL -- [this marker means that sql statements start below]
select 1, date(), time();

-- SQL -- [nothing important; it&#039;s simply comment]
select 2, date(), time();
</code></pre></div><p>Пример работы:<br /></p><div class="codebox"><pre><code>
&gt;cmdize-sql.bat -echo
select 1, date(), time();
1|2021-10-29|00:38:18
-- SQL -- [nothing important; it&#039;s simply comment]
select 2, date(), time();
2|2021-10-29|00:38:18
</code></pre></div><p>На более сложных запросах не тестировал - оставляю это Вам.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 29 Oct 2021 00:45:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150294#p150294</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150291#p150291</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Не всегда. Идея гибрида в том, что гибридный код должен быть валидный с точки зрения обоих языков</p></blockquote></div><p>Это уже полемика, на крайний случай - дело вкуса.<br /></p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Объясните, пожалуйста, значение команды, что остается после удаления комментариев</p></blockquote></div><p>Вижу уже разобрались.<br /></p><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Гибрид для julia красивый.</p></blockquote></div><p>Обернули в многострочный комментарий и - всё. По аналогии большинство гибридов так и строятся.<br />Что касается компилируемых языков - на вкус и цвет. А вот <a href="https://github.com/mbuilov/sed-windows">sed</a> и <a href="https://github.com/mbuilov/gawk-windows">awk</a>, портированные под Windows, вполне можно включить. Как и SQLite. Последний, к слову, лично применяется для разбора объёмных CSV и расширения комстроки (например, вывод календаря, конвертирование FILETIME в привычное представление времени и т.д.).</p>]]></description>
			<author><![CDATA[null@example.com (greg zakharov)]]></author>
			<pubDate>Thu, 28 Oct 2021 18:29:41 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150291#p150291</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150262#p150262</link>
			<description><![CDATA[<p>Гибрид для julia красивый. Сделал его чуть-чуть длинее, красивее и, возможно, синтаксически безопаснее:<br /></p><div class="codebox"><pre><code>
0&lt;#= :
@echo off
julia &quot;%~f0&quot; %*
goto :EOF
=#0;
println(&quot;hello from Julia&quot;)
</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Thu, 28 Oct 2021 12:01:04 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150262#p150262</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150252#p150252</link>
			<description><![CDATA[<p>Нашел: <a href="https://www.lua.org/manual/5.2/manual.html#3.3.4">https://www.lua.org/manual/5.2/manual.html#3.3.4</a> (первое упоминание в Lua5.2, в более ранних версиях, кажется, нет)<br /></p><div class="quotebox"><blockquote><p>The goto statement transfers the program control to a label. For syntactical reasons, labels in Lua are considered statements too:<br /></p><div class="codebox"><pre><code>
	stat ::= goto Name
	stat ::= label
	label ::= ‘::’ Name ‘::’
</code></pre></div></blockquote></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Wed, 27 Oct 2021 23:47:02 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150252#p150252</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150251#p150251</link>
			<description><![CDATA[<div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>гибрид можно получить из чего угодно</p></blockquote></div><p>Не всегда. Идея гибрида в том, что гибридный код должен быть валидный с точки зрения обоих языков: batch и обертываемого языка.</p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>результаты, которые ныне, увы, стали применяться в некоторых типах малвари</p></blockquote></div><p>Любой (почти любой) язык можно приспособить для написания гадости. Совсем недавно на форуме проходило обсуждение о безопасности AHK.&nbsp; Не будем затрагивать эту тему.</p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>тот же PowerShell</p></blockquote></div><p>На сколько мне известно, Вы большой знаток Powershell. Здесь я не буду с Вами много спорить. Да и та химера, которую я написал для Powershell весьма ужасна, но я пытался выжать все возможно, чтобы и параметры были доступны через $args, и $input был на месте, и хоть как-то получить имя скрипта.</p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>Julia позволяет загибридить себя множеством различных способов</p></blockquote></div><p>Пусть. Этот взят из документации - синтаксис корректен в bat и julia.</p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>Из всего перечисленного многого и не будет</p></blockquote></div><p>Я и не стремлюсь охватить все. Скрипт расширяется по мере потребности, возможности и необходимости. Тем более я не вижу смысла поддерживать компилируемые языки (типа NASM, C#, C/C++ и прочих).</p><div class="quotebox"><cite>greg zakharov пишет:</cite><blockquote><p>Нет Lua</p></blockquote></div><p>Спасибо. Дополню в будущем. Искал давно, но не нашел.</p><p><span style="color: #f00">Объясните, пожалуйста, значение команды, что остается после удаления комментариев:</span><br /></p><div class="codebox"><pre><code>::_::</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Wed, 27 Oct 2021 22:47:10 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150251#p150251</guid>
		</item>
		<item>
			<title><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150250#p150250</link>
			<description><![CDATA[<p>Строго говоря, гибрид можно получить из чего угодно. Лет пять тому назад, экспериментируя с различными интерпретаторами и компиляторами, были получены довольно любопытные результаты, которые ныне, увы, стали применяться в некоторых типах малвари (гибридизация, чай, ведь не ограничивается командными сценариями, верно?), так что развитие темы в рамках форума не было и не будет популярным. Да и справедливости ради, тот же PowerShell в нынешнем его виде ушёл далеко вперёд по сравнению со своими предшественниками, причём не только (и не столько) по части функциональности, но и в плане возможностей. Но, раз уж мы говорим о вашем сценарии, как о проекте, то:</p><p>1. Нет Lua. Гибридится она, например, так:<br /></p><div class="codebox"><pre><code>:: --[[
@lua &quot;%~f0&quot; %*&amp;exit /b --]]_::
for i,j in ipairs(arg) do print(j) end</code></pre></div><p>2. Julia позволяет загибридить себя множеством различных способов.<br /></p><div class="codebox"><pre><code>:&lt;#=
@julia &quot;%~f0&quot; %*&amp;exit /b =#
println(join(ARGS, &#039; &#039;))</code></pre></div><p>Это лишь ещё один из возможных.</p><p>3. Нет Tcl. С учётом непопулярности темы включение столь же непопулярного интерпретатора вполне очевидно.<br /></p><div class="codebox"><pre><code>::set comment {
  tclsh &quot;%~f0&quot; %*&amp;exit /b
}
foreach arg $argv {puts $arg}</code></pre></div><p>4. Нет SQLite. Если кто-то полагает, что эта, с позволения сказать, СУБД является игрушечной, тот видимо никогда с ней толком и не работал (нужны примеры?) или не шибко вникал в её синтаксис.</p><p>5. Нет Rakudo. В сущности, его гибридизация чем-то сродни Perl, так как является инкарнацией последнего, но способов получить гибрид с ним гораздо больше.</p><p>6. Нет F#\OCaml. На вопрос &quot;а нужно?&quot; можно парировать репликой рекламного героя пенсионного возраста: &quot;а вдруг?&quot;.</p><p>7. Нет поддержки NASM, C#, C\C++, VB.NET, sed\awk\vim, Nim и т.д.<br />Из всего перечисленного многого и не будет. Так что тема обречена вдвойне.</p>]]></description>
			<author><![CDATA[null@example.com (greg zakharov)]]></author>
			<pubDate>Wed, 27 Oct 2021 21:43:19 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150250#p150250</guid>
		</item>
		<item>
			<title><![CDATA[CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=150246#p150246</link>
			<description><![CDATA[<p>Обсуждение темы <a href="https://forum.script-coding.com/viewtopic.php?id=10114">CMD/BAT: Скрипт создания скриптов по принципу &quot;два в одном&quot;</a></p><p>Здесь обсуждается <strong>cmdize.bat</strong>, скрипт создания гибридных скриптов по принципу &quot;два в одном&quot;. В результате создаются скрипты-гибриды (другие названия - &quot;химеры&quot;, &quot;полиглоты&quot;), по сути являющиеся обертками для вызова интерпретатора и основного скрипта. Идея была заимствована из Perl.</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Wed, 27 Oct 2021 21:07:25 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=150246#p150246</guid>
		</item>
	</channel>
</rss>
