<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=16685&amp;type=atom" />
	<updated>2021-10-30T18:36:11Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=16685</id>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150313#p150313" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Ради спортивного интереса?</p></blockquote></div><p>Общего развития. Повторюсь, откроете много интересного. В том числе не связанного с SQL, как бы странно это ни звучало.</p>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2021-10-30T18:36:11Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150313#p150313</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150308#p150308" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-10-29T18:38:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150308#p150308</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150307#p150307" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2021-10-29T18:08:36Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150307#p150307</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150294#p150294" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-10-29T00:45:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150294#p150294</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150291#p150291" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2021-10-28T18:29:41Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150291#p150291</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150262#p150262" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-10-28T12:01:04Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150262#p150262</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150252#p150252" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-10-27T23:47:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150252#p150252</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150251#p150251" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-10-27T22:47:10Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150251#p150251</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150250#p150250" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[greg zakharov]]></name>
			</author>
			<updated>2021-10-27T21:43:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150250#p150250</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[CMD/BAT: Обсуждение скриптов создаваемых по принципу "два в одном"]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=150246#p150246" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2021-10-27T21:07:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=150246#p150246</id>
		</entry>
</feed>
