<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: запуск самораспаковывающихся архивов MS-DOS]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=14&amp;type=atom" />
	<updated>2006-07-08T07:17:34Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=14</id>
		<entry>
			<title type="html"><![CDATA[VBScript: запуск самораспаковывающихся архивов MS-DOS]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=26#p26" />
			<content type="html"><![CDATA[<p>Cкрипт распаковывает комплект квартальных отчётов 1С:Предприятия v7.7. Скрипт просто запускает все EXE-файлы в указанной папке (с некоторыми нюансами) и может быть прописан в реестре как одна из команд контекстного меню проводника для папок. Скрипт получает единственный параметр - путь к папке, в которой находятся файлы самораспаковывающихся архивов. В папке должны обязательно находиться файлы &quot;Ver.id&quot; и &quot;Loadlst.txt&quot; (такая проверка производится для уменьшения вероятности того, что скрипт ошибочно запущен &quot;не на той&quot; папке). Алгоритм работы: скрипт по очереди запускает каждый найденный в папке EXE-файл, а затем удаляет его.</p><p>Нюансы: самораспаковывающийся архив MS-DOS &quot;вываливает&quot; своё содержимое не в каталог, в котором находится сам, а в текущий каталог. Если просто запустить такой архив методом &quot;Run&quot; объекта &quot;WScript.Shell&quot;, содержимое архива будет распаковано в каталог, где расположен сам запускающий vb-скрипт. Чтобы обойти это, создаётся временный CMD-файл, в котором даётся команда &quot;CD&quot;, устанавливающая нужный текущий каталог, а затем сама команда запуска архива MS-DOS.</p><p>Если самораспаковывающийся архив MS-DOS задаёт интерактивный вопрос о перезаписи существующих файлов, ему можно ответить автоматически с помощью команды перенаправления &quot;&lt; ФайлСОтветом.txt&quot;. В данном случае во временном файле ответа находится единственный символ &quot;a&quot;, означающий &quot;All&quot;, т.е., &quot;перезаписывать все файлы&quot;.</p><p>Способы назначения команд контекстного меню проводника подробно описаны здесь:<br /><a href="http://www.script-coding.com/ContMenuExpl.html">http://www.script-coding.com/ContMenuExpl.html</a><br />Остаётся только добавить, что команда запуска скрипта в реестре может выглядеть, например, так:<br /></p><div class="codebox"><pre><code>wscript.exe &quot;C:\Program Files\QRepUnpack.vbs&quot; &quot;%1&quot;</code></pre></div>]]></content>
			<author>
				<name><![CDATA[The gray Cardinal]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=2</uri>
			</author>
			<updated>2006-07-08T07:17:34Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=26#p26</id>
		</entry>
</feed>
