<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBS: Очистка экрана]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=9346</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=9346&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBS: Очистка экрана».]]></description>
		<lastBuildDate>Tue, 25 Mar 2014 01:42:50 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=81188#p81188</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p><a href="http://forum.script-coding.com/viewtopic.php?id=9399">JScript: краткие сведения о PE файле</a> <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p></blockquote></div><p>Да я видел, но уже отметил, что интерес представляет не это:<br /></p><div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>…признаю, что предложенный приём позволяет определить именно в консоли или нет выполняется скрипт, а не спомощью какого хоста.<br />Но с прикладной точки зрения важнее узнать именно первое…</p></blockquote></div><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"><div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>А вот от того, в консоли или нет выполняется скрипт, зависит управление из него консольных приложений с помощью WshShell.Exec():<br />&lt;…&gt;<br />если же нет, то WshShell.Exec() будет запускать каждое консольное приложение в новом окне (именно так себя ведет себя скрипт в примере alexii, выполняющийся с помощью CScript.exe без собственного консольного окна и с перехватом его вывода VbsEdit)…</p></blockquote></div></div></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 25 Mar 2014 01:42:50 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=81188#p81188</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=81187#p81187</link>
			<description><![CDATA[<div class="quotebox"><cite>wisgest пишет:</cite><blockquote><div class="quotebox"><blockquote><p>Прочитать значение Subsystem из Optional Header?</p></blockquote></div><p>Насколько я понимаю речь идёт о чтении заголовка EXE-файла. Вполне возможно, не проверял. И насколько это просто сделать скриптом?</p></blockquote></div><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><a href="http://forum.script-coding.com/viewtopic.php?id=9399">JScript: краткие сведения о PE файле</a> <img src="//forum.script-coding.com/img/smilies/wink.png" width="15" height="15" />.</p><p><em>Update:</em> <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /> опоздал, Вы уже видели.</p></div></div>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 25 Mar 2014 01:14:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=81187#p81187</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=81145#p81145</link>
			<description><![CDATA[<p>Хорошо, признаю, что предложенный приём позволяет определить именно в консоли или нет выполняется скрипт, а не спомощью какого хоста.<br />Но с прикладной точки зрения важнее узнать именно первое, поэтому приём не теряет свою значимость.</p><p>Для чего надо узнать, с помощью какого хоста (WScript.exe/CScript.exe, возможно, переименованного) выполняется скрипт? Для того лишь, чтобы узнать, как себя будет вести <em>WScript.Echo()</em>? Но, если заведомо требуется диалоговое окно, можно использовать<br /><em>MsgBox()</em> или <em>WshShell.Popup()</em>,<br />а если нужен вывод в <em>StdOut</em>, то<br /><em>WScript.StdOut.WriteLine()</em> или<br /><em>CreateObject(&quot;Scripting.FileSystemObject&quot;).GetStandardStream(1).WriteLine()</em><br />— да, <em>StdOut</em> доступен и в WScript.exe, если его вывод перенаправляется/перехватывается (невозможно только перенаправление в CON):<br /></p><div class="codebox"><pre><code>wscript.exe script.js &gt; log.txt
wscript.exe script.vbs | more
for /f %i in (&#039;wscript.exe script.wsf&#039;) do echo %i
</code></pre></div><div class="codebox"><pre><code>MsgBox WshShell.Exec(&quot;wscript.exe script.vbs&quot;).StdOut.ReadAll()</code></pre></div><br /><p>А вот от того, в консоли или нет выполняется скрипт, зависит управление из него консольных приложений с помощью <em>WshShell.Exec()</em>:<br />если да, то значит так и было задумано и <em>WshShell.Exec()</em> не будет создавать новых окон;<br />если же нет, то <em>WshShell.Exec()</em> будет запускать каждое консольное приложение в новом окне (именно так себя ведет себя скрипт в примере <strong>alexii</strong>, выполняющийся с помощью CScript.exe без собственного консольного окна и с перехватом его вывода VbsEdit)<br />и, чтобы этого не происходило, можно, чтобы скрипт перезапускал сам себя под управлением консольного хоста в скрытом окне.</p><p>И тут встаёт обратная задача — получить путь к консольномо хосту сценариев: стоит ли предполагать, что это CScript.exe, находящийся в одном из каталогов, перечисленных в <em>%Path%</em> или возможно лучшее решение?<br />Я нашёл только запись в реестре:<br /></p><div class="codebox"><pre><code>C:\&gt;reg query &quot;HKLM\SOFTWARE\Microsoft\Windows Scripting Host\Locations&quot;

! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Scripting Host\Locations
    CScript     REG_EXPAND_SZ   %SystemRoot%\System32\cscript.exe
    WScript     REG_EXPAND_SZ   %SystemRoot%\System32\wscript.exe
</code></pre></div><p>— Испольуется ли этот раздел для чего нибудь или это только атавизм, присутствует ли он в 64-разрядных системах?</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Sun, 23 Mar 2014 10:25:53 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=81145#p81145</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80975#p80975</link>
			<description><![CDATA[<p>Вы ссылку на почту получили от меня? Там пример консольного хоста с перехватом его вывода. В результате возникает ошибка при исполнении указанного кода.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 18 Mar 2014 21:07:48 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80975#p80975</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80963#p80963</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Но задача-то ставилась узнать, какой из хостов используется.</p></blockquote></div><div class="quotebox"><cite>wisgest пишет:</cite><blockquote><p>Определить, с помощью консольного или оконного сервера исполняется сценарий</p></blockquote></div><p><strong>alexii</strong>, а что, возможно несоответствие: скрипт может выполнятся в консоли с помощью неконсольного хоста или наоборот? По-моему, задача одна и та же.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 18 Mar 2014 14:09:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80963#p80963</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80956#p80956</link>
			<description><![CDATA[<p>Не в консоли. Но задача-то ставилась узнать, какой из хостов используется.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 18 Mar 2014 13:16:27 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80956#p80956</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80955#p80955</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>В ряде случаев — вызовет.</p></blockquote></div><p>Если скрипт выполняется не в консоли — это и есть критерий. Нет?</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 18 Mar 2014 12:33:44 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80955#p80955</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80953#p80953</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>а именно, вызовет ли ошибку</p></blockquote></div><p>В ряде случаев — вызовет.</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 18 Mar 2014 12:31:01 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80953#p80953</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80952#p80952</link>
			<description><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><p>Прочитать значение Subsystem из Optional Header?</p></blockquote></div><p>Насколько я понимаю речь идёт о чтении заголовка EXE-файла. Вполне возможно, не проверял. И насколько это просто сделать скриптом? Скорее всего, в случае wscript.exe/cscript.exe это будет работать однозначно, но всегда ли предопределено, будет приложение исполняться как консольное или нет?</p><p>В любом случае речь шла о более скриптовом решении с помощью «утиной типизации» (что на мой взгляд является самым правильным подходом),<br />а именно, вызовет ли ошибку<br /></p><div class="codebox"><pre><code>CreateObject(&quot;Scripting.FileSystemObject&quot;).OpenTextFile(&quot;CON&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 18 Mar 2014 12:21:58 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80952#p80952</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80951#p80951</link>
			<description><![CDATA[<p>Прочитать значение Subsystem из Optional Header?</p>]]></description>
			<author><![CDATA[null@example.com (alexii)]]></author>
			<pubDate>Tue, 18 Mar 2014 12:04:32 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80951#p80951</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80948#p80948</link>
			<description><![CDATA[<p>Прошу прощения, имелось в виду, конечно же, свойство <em>.FullName</em> (исправил).<br />Просто я вначале хотел привести описание из той же таблицы для свойства <em>.Path</em>:<br /></p><div class="quotebox"><blockquote><p>Содержит путь к каталогу, в котором находятся cscript.exe или wscript.exe (обычно это C:\WINDOWS\COMMAND и C:\WINDOWS соответственно)</p></blockquote></div><p>и в итоге сбился. А передумал потому, что в этом случае названия файлов сервера сценариев указаны безусловно, а в том присутствует оговорка в виде слова «обычно».<br /></p><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;Вот, кстати, и задача:</div><div class="fancy_spoiler"><p>Определить, с помощью консольного или оконного сервера исполняется сценарий, не делая никаких предположений из имени исполняемого файла (допустим, он мог быть переименован).</p></div></div>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 18 Mar 2014 11:38:20 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80948#p80948</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80939#p80939</link>
			<description><![CDATA[<p>WSH 5.8<br /></p><div class="codebox"><pre><code>
// z.js
WScript.Echo(&#039;Path     : &#039; + WScript.Path);
WScript.Echo(&#039;PathName : &#039; + WScript.PathName);
</code></pre></div><div class="fancy_spoiler_switcher"><div class="fancy_spoiler_switcher_header"><strong>+</strong>&nbsp;результаты</div><div class="fancy_spoiler"><div class="codebox"><pre><code>
C:\PROGS\TOOLS\JavaScript&gt;c:\Windows\System32\cscript.exe //nologo z.js
Path     : c:\Windows\System32
PathName : undefined

C:\PROGS\TOOLS\JavaScript&gt;c:\Windows\SysWOW64\cscript.exe //nologo z.js
Path     : c:\Windows\SysWOW64
PathName : undefined
</code></pre></div></div></div>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Tue, 18 Mar 2014 10:29:23 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80939#p80939</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80926#p80926</link>
			<description><![CDATA[<div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>WScript.Path может указывать как на %windir%\System32, так и на %windir%\SysWOW64</p></blockquote></div><p>Не обязательно. Описание свойства <em>WScript.FullName</em> из книги «Командные файлы и сценарии Windows Script Host»:<br /></p><div class="quotebox"><cite>Андрей Попов пишет:</cite><blockquote><p>Содержит полный путь к исполняемому серверу сценариев (обычно это C:\WINDOWS\COMMAND\CSCRIPT.EXE для консольной версии WSH или C:\WINDOWS\WSCRIPT.EXE для оконной версии)</p></blockquote></div><div class="quotebox"><cite>Rumata пишет:</cite><blockquote><p>Добавить полный путь до команды mode.com.</p></blockquote></div><p>На мой взгляд, излишне по схожей причине.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Tue, 18 Mar 2014 05:56:46 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80926#p80926</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80797#p80797</link>
			<description><![CDATA[<div class="quotebox"><blockquote><p>Замечания, предложения, дополнения?</p></blockquote></div><p>Скорее дополнение. Но код становится еще более избыточным. </p><p>Добавить полный путь до команды mode.com. Возможны два варианта:</p><p>абсолютный путь до утилиты<br />%windir%\\System32\\mode.com</p><p>путь относительно сервера сценариев (где WScript.Path может указывать как на %windir%\System32, так и на %windir%\SysWOW64)<br />WScript.Path + &quot;mode.com&quot;</p><p>Который из них лучше?</p>]]></description>
			<author><![CDATA[null@example.com (Rumata)]]></author>
			<pubDate>Fri, 14 Mar 2014 19:23:14 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80797#p80797</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBS: Очистка экрана]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=80691#p80691</link>
			<description><![CDATA[<p>Спасибо решение wisgest помогло.</p><p>Пока косвенных проблем не почувствовал. Посмотрим дальше.</p>]]></description>
			<author><![CDATA[null@example.com (wildwolf007)]]></author>
			<pubDate>Wed, 12 Mar 2014 09:31:11 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=80691#p80691</guid>
		</item>
	</channel>
</rss>
