<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JScript: Включение одного файла в другой]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=6166&amp;type=atom" />
	<updated>2012-04-08T01:17:25Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=6166</id>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=59011#p59011" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>
//в test.js написать
var echo = function(msg){WScript.Echo(msg);}</code></pre></div><p>Для VB<br /></p><div class="codebox"><pre><code>
&#039;* CScript.cmd
&#039;* copy CScript.vbs %SystemRoot%\System32\CScript.vbs

&#039;* CScript.reg
&#039;; REGEDIT4
&#039;; 
&#039;; [HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command]
&#039;; @=&quot;%SystemRoot%\\System32\\CScript.exe %SystemRoot%\\System32\\CScript.vbs &quot;&quot;%1&quot;&quot; %*&quot;

&#039;* CScript.vbs 
OPTION EXPLICIT
Dim Str, Args, i:Str = &quot;5075626C69632046756E6374696F6E20496E636C756465202846696C654E616D65293A&quot;&amp;_
&quot;57697468204372656174654F626A6563742822536372697074696E672E46696C6553797374656D4F626A656374222&quot;&amp;_
&quot;90D0A4946204E6F74202E46696C654578697374732846696C654E616D6529205468656E3A575363726970742E4563&quot;&amp;_
&quot;686F202294A0A9AB20ADA520ADA0A9A4A5AD3A20222646696C654E616D653A496E636C7564653D323A57536372697&quot;&amp;_
&quot;0742E517569740D0A496E636C7564653D2E47657446696C652846696C654E616D65292E4F70656E41735465787453&quot;&amp;_
&quot;747265616D2831292E52656164416C6C3A4F4E204552524F5220524553554D45204E4558543A45786563757465476&quot;&amp;_
&quot;C6F62616C28496E636C756465290D0A4966204572722E4E756D626572205468656E3A4572722E436C6561723A4361&quot;&amp;_
&quot;6C6C20436865636B4572722846696C654E616D652C20496E636C756465293A4F4E204552524F5220474F544F20300&quot;&amp;_
&quot;D0A456E6420576974683A456E642046756E6374696F6E3A46756E6374696F6E20436865636B4572722846696C654E&quot;&amp;_
&quot;616D652C20436F6465293A57697468204372656174654F626A65637428224D53536372697074436F6E74726F6C2E5&quot;&amp;_
&quot;36372697074436F6E74726F6C22290D0A2E4C616E67756167653D225642536372697074223A2E6164646F626A6563&quot;&amp;_
&quot;74202257536372697074222C575363726970743A4F4E204552524F5220524553554D45204E4558543A2E616464636&quot;&amp;_
&quot;F646528436F6465290D0A575363726970742E4563686F20228EA1E0A0A1AEE2AAA820E4A0A9ABA020222646696C65&quot;&amp;_
&quot;4E616D6526222822262E4572726F722E4C696E6526222C2022262E4572726F722E436F6C756D6E202B20312026222&quot;&amp;_
&quot;92226766243724C66265F0D0A2E4572726F722E536F7572636526223A2022262E4572726F722E4465736372697074&quot;&amp;_
&quot;696F6E3A436865636B4572723D4572722E4E756D6265723A4572722E436C6561723A4F4E204552524F5220474F544&quot;&amp;_
&quot;F20300D0A575363726970742E5175697420436865636B4572723A456E6420576974683A456E642046756E6374696F6E&quot;
With WScript.Arguments
 If .Count &gt; 1 Then
  For i  = 1 to .Count -1
   Args    = Args &amp; &quot; &quot; &amp; .Item(i)                   &#039; Собрать аргументы в строку
  Next
 End If
End With
&#039;* Сохранить копию, дописать к файлу функцию Include, выполнить скрипт и востановить его
SwapExec WScript.Arguments(0), Args, Str_Hex(Str, &quot;dec&quot;)&#039;* сохранненную копию

Function SwapExec(FileName, Args ,Str)
Dim FSO, TempName, Stream
 Set FSO    = CreateObject(&quot;Scripting.FileSystemObject&quot;)&#039; Объявить объект
 TempName   = FSO.GetTempName                        &#039; Имя файла временной копии
 FSO.CopyFile FileName, TempName, 0                  &#039; Создать временную копию
 Set Stream = FSO.OpenTextFile(FileName,8,0)         &#039; Открыть файл для дозаписи   
 Stream.WriteLine                                    &#039; Добавить пустую строку
 Stream.WriteLine Str                                &#039; Добавить фрагмент к файлу
 Stream.Close                                        &#039; Закрыть файл
 ScriptExec FileName, Args                           &#039; Выполнить файл
 FSO.DeleteFile FileName, 0                          &#039; Удалить файл
 FSO.MoveFile TempName, FileName                     &#039; Востановить файл из копии
 Set Stream = Nothing                                &#039; Разрушить объект Stream
 Set FSO    = Nothing                                &#039; Разрушить объект FSO
End Function

Function Str_Hex(Str, Val)                           &#039; Если ключь &quot;enc&quot; преобразовываем строку
 If Val    = &quot;enc&quot; Then                              &#039; в ее HEX значение
  For Val  = 1 To Len(str)                           &#039; Читать строку с первого до последнего символа
   Str_Hex = Str_Hex &amp; Right(&quot;0&quot; &amp; Hex(Asc(Mid(Str, Val, 1))), 2) &#039; Преобразование в HEX значение
  Next
 Else                                                &#039; иначе наоборот HEX значение в строку
  For Val  = 1 To Len(str) step 2                    &#039; Читать строку с первого до последнего символа
   Str_Hex = Str_Hex &amp; Chr(&quot;&amp;H&quot; &amp; Mid(str, Val, 2))  &#039; Преобразование в строку
  Next
 End if
End Function

Function ScriptExec(FileName, Args)
 With CreateObject(&quot;WScript.Shell&quot;).Exec(&quot;cscript.exe /nologo &quot; &amp; Chr(34) &amp; FileName &amp; Chr(34) &amp; Args)&#039; Выполнить комманду
  With .StdOut                                       &#039; Читать стандартный поток вывода
   While Not .AtEndOfStream                          &#039;  до конца потока &quot;EndOfStream&quot;
    Wscript.Echo Str_ReCode(.ReadLine, &quot;cp866&quot;, &quot;windows-1251&quot;)&#039; Передать перекодированный вывод на экран
   Wend
  End With
  With .StdErr                                       &#039; Читать поток вывода ошибок
   While Not .AtEndOfStream                          &#039;  до конца потока &quot;EndOfStream&quot;
    Wscript.Echo Str_ReCode(.ReadLine, &quot;cp866&quot;, &quot;windows-1251&quot;)&#039; Передать перекодированный вывод на экран
   Wend
  End With
 End With
End Function

Function Str_ReCode(InpStr, InpCode, OutCode)
 IF InpCode = &quot;&quot; Then Str_ReCode=InpStr:Exit Function&#039; Если кодировка входящей не указанна выйти
 IF OutCode = &quot;&quot; Then OutCode = &quot;windows-1251&quot;       &#039; Кодировка исходящей строки по умолчанию
 With CreateObject(&quot;ADODB.Stream&quot;)                   &#039; Объявить объект ADODB
     .Charset   = OutCode                            &#039; Указать кодировку исходящей строки
     .Open                                           &#039; Открыть поток
     .Writetext InpStr                               &#039; Записать входящую строку
     .position  = 0                                  &#039; Перевести указатель на начало
     .Charset   = InpCode                            &#039; Указать кодировку входящей строки
     Str_ReCode = .readText                          &#039; Прочитать исходящую строку
 End With
End Function
&#039;* End of file</code></pre></div>]]></content>
			<author>
				<name><![CDATA[XGuest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27830</uri>
			</author>
			<updated>2012-04-08T01:17:25Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=59011#p59011</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51042#p51042" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Camarada пишет:</cite><blockquote><p>WSC долго и требует регистрации компонента, поэтому я от этого отказался.</p></blockquote></div><p>Если использовать моникер «script:» — не требует.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2011-09-01T20:29:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51042#p51042</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51015#p51015" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Spy00000 пишет:</cite><blockquote><p>Вот здесь описан формат WSF файлов: <a href="http://msdn.microsoft.com/en-us/library/x4d5a2tx%28v=VS.85%29.aspx">http://msdn.microsoft.com/en-us/library … 85%29.aspx</a><br />&lt;job&gt;&lt;/job&gt; - в данном случае это просто оболочка, чтобы можно было написать несколько тегов &lt;script&gt;&lt;/script&gt; подряд.</p></blockquote></div><p>Благодарю, этот вариант вполне устроит. WSC долго и требует регистрации компонента, поэтому я от этого отказался.</p>]]></content>
			<author>
				<name><![CDATA[Camarada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24452</uri>
			</author>
			<updated>2011-09-01T06:22:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51015#p51015</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51014#p51014" />
			<content type="html"><![CDATA[<p>Вот здесь описан формат WSF файлов: <a href="http://msdn.microsoft.com/en-us/library/x4d5a2tx%28v=VS.85%29.aspx">http://msdn.microsoft.com/en-us/library … 85%29.aspx</a><br />&lt;job&gt;&lt;/job&gt; - в данном случае это просто оболочка, чтобы можно было написать несколько тегов &lt;script&gt;&lt;/script&gt; подряд.</p>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-09-01T06:14:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51014#p51014</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51011#p51011" />
			<content type="html"><![CDATA[<p>В итоге думаю раскидать код по отдельным js, а в wsf-файле вызвать функцию Main(), что-то вроде этого.</p>]]></content>
			<author>
				<name><![CDATA[Camarada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24452</uri>
			</author>
			<updated>2011-09-01T05:58:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51011#p51011</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=51010#p51010" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Xameleon пишет:</cite><blockquote><p><strong>Execute</strong><br /><a href="http://msdn.microsoft.com/en-us/library/03t418d2(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library … S.85).aspx</a></p><p><strong>ExecuteGlobal</strong><br /><a href="http://msdn.microsoft.com/en-us/library/342311f1(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library … s.85).aspx</a></p></blockquote></div><p>Спасибо за ответ, мой вопрос был про JScript, как я понял, statements Execute и ExecuteGlobal поддерживаются VBScript.</p><br /><p>По поводу второго варианта, спасибо, мне не очень нравится решение, но попробовать может.<br />Не нравится наверное потому, что не знаю, что такое job.</p>]]></content>
			<author>
				<name><![CDATA[Camarada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24452</uri>
			</author>
			<updated>2011-09-01T05:51:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=51010#p51010</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50993#p50993" />
			<content type="html"><![CDATA[<p>Если основной файл сохранять в виде WSF файла, а не JS, то можно делать так:<br /></p><div class="codebox"><pre><code>&lt;job&gt;
  &lt;script language=&quot;JScript&quot; src=&quot;test.js&quot;/&gt;
  &lt;script language=&quot;JScript&quot;&gt;
    echo(&quot;fuck&quot;);
  &lt;/script&gt;
&lt;/job&gt;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Spy00000]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27060</uri>
			</author>
			<updated>2011-08-31T14:23:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50993#p50993</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50990#p50990" />
			<content type="html"><![CDATA[<p><strong>Execute</strong><br /><a href="http://msdn.microsoft.com/en-us/library/03t418d2(v=VS.85).aspx">http://msdn.microsoft.com/en-us/library … S.85).aspx</a></p><p><strong>ExecuteGlobal</strong><br /><a href="http://msdn.microsoft.com/en-us/library/342311f1(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library … s.85).aspx</a></p>]]></content>
			<author>
				<name><![CDATA[Xameleon]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=8836</uri>
			</author>
			<updated>2011-08-31T12:39:24Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50990#p50990</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JScript: Включение одного файла в другой]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=50988#p50988" />
			<content type="html"><![CDATA[<p>Знаете поискал, нашел только с помощью чтения файла и вызова eval.<br />Однако, я хочу подключать <strong>определения</strong> и тут сталкиваюсь с такой проблемой.</p><div class="codebox"><pre><code>test.js

function echo(msg){
        WScript.Echo(msg);
}</code></pre></div><p>main.js</p><div class="codebox"><pre><code>include_file(&quot;test.js&quot;);


var fso = null;
function get_fso(){
        if (fso == null)
               fso = new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);
        return fso;
}

function include_file(file_path){
    var fs = get_fso();
    var file = fs.OpenTextFile(file_path);
    str = file.ReadAll();
    file.Close();
    eval(str);
}


echo(&quot;fuck&quot;);//Error &quot;Предполагается наличие объекта&quot;</code></pre></div><p>Вот так</p><div class="codebox"><pre><code>function include_file(file_path){
    var fs = get_fso();
    var file = fs.OpenTextFile(file_path);
    str = file.ReadAll();
    file.Close();
    eval(str);
    echo(&quot;fuck&quot;);
}</code></pre></div><p>echo работает. Т.е. имеем проблемы с областью видимости. Есть ли путь решения? Второй день занимаюсь JS, не пинайте пожалуйста.</p>]]></content>
			<author>
				<name><![CDATA[Camarada]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24452</uri>
			</author>
			<updated>2011-08-31T11:49:19Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=50988#p50988</id>
		</entry>
</feed>
