<?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=5074&amp;type=atom" />
	<updated>2010-10-27T09:04:01Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5074</id>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40906#p40906" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>GreyBear пишет:</cite><blockquote><p>я правильно помню, что для передачи через WScript.Stdout необходимо запускать оба скрипта посредством cscript.exe?</p></blockquote></div><p>Да:<br /></p><div class="quotebox"><cite>StdOut Property (WScript) пишет:</cite><blockquote><p>The <strong>StdIn</strong>, <strong>StdOut</strong>, and <strong>StdErr</strong> streams can be accessed while using CScript.exe only. Attempting to access these streams while using WScript.exe produces an error.</p></blockquote></div><div class="quotebox"><cite>GreyBear пишет:</cite><blockquote><p>а вариант с передачей из второго скрипта кода завершения через WScript.Quit(&lt;код&gt;) не подойдет? выглядит попроще.</p></blockquote></div><p>В данном случае — нет: errorlevel — 32-битное целое.<br /></p><div class="quotebox"><cite>ExitProcess Function пишет:</cite><blockquote><p>Ends the calling process and all its threads.<br /></p><div class="codebox"><pre><code>VOID WINAPI ExitProcess(
  __in          UINT uExitCode
);</code></pre></div><p><strong>Parameters</strong><br /><em>uExitCode</em> <br />The exit code for the process and all threads.</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-27T09:04:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40906#p40906</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40897#p40897" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Запускаете внешний скрипт посредством WshShell.Exec. Во внешнем скрипте пишете выходные данные на WScript.Stdout, в основном скрипте читаете их же посредством WshExec.Stdout, наподобие <a href="http://forum.script-coding.com/viewtopic.php?pid=25186#p25186">этого</a>. Примеров работы на форуме было много, в том числе и на JScript.</p></blockquote></div><p>я правильно помню, что для передачи через WScript.Stdout необходимо запускать оба скрипта посредством cscript.exe?</p><p>а вариант с передачей из второго скрипта кода завершения через WScript.Quit(&lt;код&gt;) не подойдет? выглядит попроще.</p>]]></content>
			<author>
				<name><![CDATA[GreyBear]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24465</uri>
			</author>
			<updated>2010-10-27T06:47:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40897#p40897</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40857#p40857" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>putrsa пишет:</cite><blockquote><p>В данном случае результат получаю через 2 секунды (я думаю для такого скрипта очень много)</p></blockquote></div><p>Я тоже так думаю <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" />.<br /><strong>0001.vbs</strong><br /></p><div class="codebox"><pre><code>Option Explicit

Const WshFinished = 1

Dim objWshShell
Dim objWshExec

Dim strOutText


WScript.Echo &quot;&gt;&quot;, Timer

Set objWshShell = WScript.CreateObject(&quot;WScript.Shell&quot;)
Set objWshExec = objWshShell.Exec(&quot;cscript.exe //nologo &quot;&quot;C:\Песочница\003\0002.vbs&quot;&quot; 2&quot;)

Do Until objWshExec.Status = WshFinished
    strOutText = strOutText &amp; objWshExec.StdOut.ReadAll
    objWshExec.StdErr.ReadAll
    
    WScript.Sleep 10
Loop

WScript.Echo strOutText

Set objWshExec  = Nothing
Set objWshShell = Nothing

WScript.Echo &quot;&lt;&quot;, Timer

WScript.Quit 0</code></pre></div><p><strong>0002.vbs</strong><br /></p><div class="codebox"><pre><code>Option Explicit

Dim objArgs
Dim strValue

Set objArgs = WScript.Arguments

If objArgs.Count &gt; 0 Then
    Select Case objArgs.Item(0)
        Case &quot;0&quot;
            strValue = &quot;січень&quot;
        Case &quot;1&quot;
            strValue = &quot;лютий&quot;
        Case &quot;2&quot;
            strValue = &quot;березень&quot;
        Case &quot;3&quot;
            strValue = &quot;квітень&quot;
        Case &quot;4&quot;
            strValue = &quot;травень&quot;
        Case &quot;5&quot;
            strValue = &quot;червень&quot;
        Case &quot;6&quot;
            strValue = &quot;липень&quot;
        Case &quot;7&quot;
            strValue = &quot;серпень&quot;
        Case &quot;8&quot;
            strValue = &quot;вересень&quot;
        Case &quot;9&quot;
            strValue = &quot;жовтень&quot;
        Case &quot;10&quot;
            strValue = &quot;листопад&quot;
        Case &quot;11&quot;
            strValue = &quot;грудень&quot;
    End Select
    
    WScript.StdOut.Write strValue
End If

Set objArgs = Nothing

WScript.Quit 0</code></pre></div><div class="quotebox"><cite>образцы 3-х запусков пишет:</cite><blockquote><div class="codebox"><pre><code>&gt; 56319,16
березень
&lt; 56319,3</code></pre></div><div class="codebox"><pre><code>&gt; 56504,57
березень
&lt; 56504,71</code></pre></div><div class="codebox"><pre><code>&gt; 56520,11
березень
&lt; 56520,27</code></pre></div></blockquote></div><p>У Вас что-то тормозит исполнение WinAPI CreateProcess(): антивирус, фаерволл и т.п. У меня подобное было. Простой запуск «cmd.exe» мог растянуться на несколько секунд.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-26T11:46:00Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40857#p40857</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40853#p40853" />
			<content type="html"><![CDATA[<p>В данном случае результат получаю через 2 секунды (я думаю для такого скрипта очень много)<br />основной скрипт<br /></p><div class="codebox"><pre><code>var WshShell = WScript.CreateObject(&quot;WScript.Shell&quot;);
var Outobj=WshShell.Exec(&quot;cscript D:\\scripts\\mes_propis.js 8&quot;);
StrOut= Outobj.Stdout.ReadAll();
WScript.StdOut.Write(StrOut);</code></pre></div><p>запускаемый скрипт<br /></p><div class="codebox"><pre><code>var ms=&#039;0&#039;;
var oArg=WScript.Arguments;
if (WScript.Arguments.Count()&gt;0) ms=oArg(0); 
switch (ms) 
{
 case &#039;0&#039; : mes=&#039;січень&#039;; break;
 case &#039;1&#039; : mes=&#039;лютий&#039;; break;
 case &#039;2&#039; : mes=&#039;березень&#039;; break;
 case &#039;3&#039; : mes=&#039;квітень&#039;; break;
 case &#039;4&#039; : mes=&#039;травень&#039;; break;
 case &#039;5&#039; : mes=&#039;червень&#039;; break;
 case &#039;6&#039; : mes=&#039;липень&#039;; break;
 case &#039;7&#039; : mes=&#039;серпень&#039;; break;
 case &#039;8&#039; : mes=&#039;вересень&#039;; break;
 case &#039;9&#039; : mes=&#039;жовтень&#039;; break;
 case &#039;10&#039; : mes=&#039;листопад&#039;; break;
 case &#039;11&#039; : mes=&#039;грудень&#039;; break;
}
WScript.StdOut.Write(mes);</code></pre></div>]]></content>
			<author>
				<name><![CDATA[putrsa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25443</uri>
			</author>
			<updated>2010-10-26T10:32:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40853#p40853</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40851#p40851" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>putrsa пишет:</cite><blockquote><p>Очень медленно получается, если несколько скриптов подряд обрабатывать вобще капут.</p></blockquote></div><p>Например?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-26T10:12:52Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40851#p40851</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40847#p40847" />
			<content type="html"><![CDATA[<p>Очень медленно получается, если несколько скриптов подряд обрабатывать вобще капут. Может есть быстрее способ, без Stdout? Может ли WSH работать напрямую с памятью или создавать свой буфер?</p>]]></content>
			<author>
				<name><![CDATA[putrsa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25443</uri>
			</author>
			<updated>2010-10-26T09:19:32Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40847#p40847</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40726#p40726" />
			<content type="html"><![CDATA[<p>Запускаете внешний скрипт посредством WshShell.Exec. Во внешнем скрипте пишете выходные данные на WScript.Stdout, в основном скрипте читаете их же посредством WshExec.Stdout, наподобие <a href="http://forum.script-coding.com/viewtopic.php?pid=25186#p25186">этого</a>. Примеров работы на форуме было много, в том числе и на JScript.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-10-22T10:47:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40726#p40726</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[JScript: как получить результат работы внешнего скрипта]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=40719#p40719" />
			<content type="html"><![CDATA[<p>Хотелось бы сделать так: Первый скрипт запускает с параметрами второй, второй отрабатывает и возвращает результаты своей работы (например сумму прописью), которые дальше можно обрабатывать в первом скрипте</p>]]></content>
			<author>
				<name><![CDATA[putrsa]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25443</uri>
			</author>
			<updated>2010-10-22T09:18:28Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=40719#p40719</id>
		</entry>
</feed>
