<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=5122&amp;type=atom" />
	<updated>2012-08-28T13:25:26Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=5122</id>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=63267#p63267" />
			<content type="html"><![CDATA[<p>в общем получилось вот так</p><div class="codebox"><pre><code>strDir = &quot;c:\ta&quot; &#039; каталог, за которым следим
strComputer = &quot;.&quot; &#039; имя компьютера; &quot;.&quot; означает текущий компьютер
strDirSlash = Replace(strDir, &quot;\&quot;, &quot;\\\\&quot;)
strNamespace = &quot;Root\CIMV2&quot;

Set objService = GetObject(&quot;WinMgmts:\\&quot; &amp; strComputer &amp; &quot;\&quot; &amp; strNamespace)
Set objSink = WScript.CreateObject(&quot;WbemScripting.SWbemSink&quot;, &quot;Sink_&quot;)
Set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)

objService.ExecNotificationQueryAsync objSink, _
    &quot;SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE &quot; &amp;_
    &quot;Targetinstance ISA &#039;CIM_DirectoryContainsFile&#039; and &quot; &amp;_
    &quot;TargetInstance.GroupComponent= &quot; &amp;_
    &quot;&#039;Win32_Directory.Name=&quot;&quot;&quot; &amp; strDirSlash &amp; &quot;&quot;&quot;&#039;&quot;

While 1
    WScript.Sleep 3000
Wend

Sub Sink_OnObjectReady(oOutParams, oContext)
    Set Hh = CreateObject(&quot;Internet.HHCtrl&quot;)
    Hh.TextPopup &quot;Принят новый файл: &quot; &amp; vbCrLf &amp; objService.Get(oOutParams.TargetInstance.PartComponent).Name, &quot;Courier New,22&quot;, 1, 1, 1, 1
    WScript.Sleep 1000
    Set Hh = Nothing
    AddLog(objService.Get(oOutParams.TargetInstance.PartComponent).Name)
End Sub


Function AddLog(str)
    if fso.FileExists(&quot;sync_m_&quot; &amp; date &amp; &quot;.htm&quot;) then 
        Set objTextFile = fso.OpenTextFile(&quot;sync_m_&quot; &amp; date &amp; &quot;.htm&quot;, 8, True)
    else 
        Set objTextFile = fso.OpenTextFile(&quot;sync_m_&quot; &amp; date &amp; &quot;.htm&quot;, 2, True)
    end if
    objTextFile.WriteLine(&quot;&lt;font size=3&gt;&quot; &amp; Now &amp; &quot; - &quot; &amp; Str &amp; &quot;&lt;/font&gt;&lt;/br&gt;&quot;)
    objTextFile.Close
End Function</code></pre></div><p>в итоге - встплывающие сообщения есть (пусть и не из трея)<br />лог сделан</p><br /><p>ЗЫ но как оказалось нужно на рабочем столе пользователя динамически отражать последние 5 файлов которые ему пришли... думаю как сделать</p>]]></content>
			<author>
				<name><![CDATA[qwertEHOK]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27326</uri>
			</author>
			<updated>2012-08-28T13:25:26Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=63267#p63267</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=63117#p63117" />
			<content type="html"><![CDATA[<p>подскажите пожалуйста</p><p>- как остановить скрипт <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /><br />- возможно ли сделать вместо обычного сообщения всплывающее сообщение из трея?<br />- как прикрутить логирование</p>]]></content>
			<author>
				<name><![CDATA[qwertEHOK]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27326</uri>
			</author>
			<updated>2012-08-24T12:38:48Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=63117#p63117</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=58546#p58546" />
			<content type="html"><![CDATA[<p>Если вам надо подставить время то воспользуйтесь примером:</p><br /><div class="codebox"><pre><code>
strServer = &quot;.&quot;

Set objWMI = GetObject(&quot;winmgmts://&quot; &amp; strServer &amp; &quot;/root\cimv2&quot;)
Set objInstances = objWMI.InstancesOf(&quot;Win32_LocalTime&quot;,48)

For Each objInstance in objInstances
   WScript.Echo objInstance.getObjectText_
Next</code></pre></div><p>Если вам нужно подставить в WQL запрос маску &#039;mz*.*&#039; то вам нужно использовать оператор like &#039;%mz%[.]%&#039; - но тут может быть проблемка ведь в имени файла может быть несколько точек,<br />можно конечно попытаться подставить место последнего &#039;%&#039; несколько &#039;???&#039; или &#039;?????&#039; вообщем попробовать задать шаблон для расширения если конечно они у вас регламентированной длинны.</p>]]></content>
			<author>
				<name><![CDATA[Vasek]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=27769</uri>
			</author>
			<updated>2012-03-29T11:07:01Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=58546#p58546</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=58058#p58058" />
			<content type="html"><![CDATA[<p>Помогите, пожалуйста, модифицировать скриптик так, чтобы при запуске(каждое утро) параметр <br />strDir = &quot;каталог&quot; &#039; каталог, за которым следим, strDir менялся на V:\Post\Store\год\месяц\дата, год = 2012, месяц = 03, день = 19 - в таком формате.<br />И, чтоб сканила по маске, а именно на файлы mz*.*<br />Помогите, пожалуйста. Спасибо!!</p>]]></content>
			<author>
				<name><![CDATA[dognike]]></name>
			</author>
			<updated>2012-03-19T13:38:40Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=58058#p58058</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41413#p41413" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>bnp322 пишет:</cite><blockquote><p>Ошибки нет, но сообщение &quot;выскакивает&quot; до окончания копирования.</p><p>Я пробовал использовать еще 1 скрипт с форума (он еще и копирует) - он действительно выдает ошибку.</p></blockquote></div><p>Ошибка была на другом скрите! Извиняюсь, насчет ошибки я ввел в заблуждение!</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-09T21:05:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41413#p41413</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41408#p41408" />
			<content type="html"><![CDATA[<p>Подтверждаю: я был не прав, уведомление о новом файле возникает до закрытия файла. У меня это начало проявляться, когда я начал копировать файлы объёмами выше гигабайта (очевидно, что для сети, с её более низкой пропускной способностью, проявится и на меньших объёмах).</p><p>Однако: я не подтверждаю появления какой-либо ошибки <a href="http://forum.script-coding.com/viewtopic.php?pid=41381#p41381">на выложенном Вами выше</a> и несколько адаптированном мною под себя коде (для целей отладки я завершаю отслеживание после появления первого же файла):<br /></p><div class="codebox"><pre><code>Option Explicit

Dim objSWbemServicesEx
Dim objSWbemSink

Dim strFolder
Dim boolDone


Set objSWbemServicesEx = GetObject(&quot;winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2&quot;)
Set objSWbemSink = WScript.CreateObject(&quot;WbemScripting.SWbemSink&quot;, &quot;SINK_&quot;)

strFolder = &quot;c:\Temp&quot;

objSWbemServicesEx.ExecNotificationQueryAsync objSWbemSink, _
    &quot;SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE &quot; &amp; _
    &quot;TargetInstance ISA &#039;CIM_DirectoryContainsFile&#039; AND &quot; &amp; _
    &quot;TargetInstance.GroupComponent = &#039;Win32_Directory.Name=&quot;&quot;&quot; &amp; Replace(strFolder, &quot;\&quot;, &quot;\\\\&quot;) &amp; &quot;&quot;&quot;&#039;&quot;

boolDone = False

Do
    WScript.Sleep 1000
Loop Until boolDone

objSWbemSink.Cancel

Set objSWbemSink       = Nothing
Set objSWbemServicesEx = Nothing

WScript.Quit 0
&#039;=============================================================================

&#039;=============================================================================
Sub SINK_OnObjectReady(objSWbemObject, objSWbemAsyncContext)
    With objSWbemServicesEx.Get(objSWbemObject.TargetInstance.PartComponent)
        WScript.Echo .FileName &amp; &quot;.&quot; &amp; .Extension
    End With
        
    boolDone = True
End Sub
&#039;=============================================================================</code></pre></div><p>Какая именно ошибка у Вас <a href="http://forum.script-coding.com/viewtopic.php?pid=41381#p41381">возникала</a>? Либо Вы что-то сразу пытались сделать с файлом, а код не привели?</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-09T19:08:56Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41408#p41408</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41402#p41402" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>alexii пишет:</cite><blockquote><div class="quotebox"><cite>bnp322 пишет:</cite><blockquote><p>если файл еще копируется,</p></blockquote></div><p>Как и чем копируется файл? У меня такой ошибки не возникало ни разу, т.е. уведомление о событии возникало только после закрытия файла (не важно, при создании, копировании или перемещении).</p></blockquote></div><p>Уведомление о событии возникает в начале копирования !</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-09T15:35:50Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41402#p41402</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41387#p41387" />
			<content type="html"><![CDATA[<p><span style="color: green">Забыл написать: для оформления кода используется тэг «code», а не «quote». Ссылки оформляются <a href="http://forum.script-coding.com/help.php#bbcode">тэгом «url»</a>. Я исправил Ваши посты.</span></p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-09T12:23:32Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41387#p41387</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41386#p41386" />
			<content type="html"><![CDATA[<p>Исходя из содержания скрипта:<br />WScript.CreateObject</p><p>Он все делает правильно, остается добавить анализ на изменение объектов</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-09T12:06:54Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41386#p41386</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41385#p41385" />
			<content type="html"><![CDATA[<p>Проводником винды, загружаемый с фтп файл также сразу обнаруживается.</p><p>Ошибки нет, но сообщение &quot;выскакивает&quot; до окончания копирования.</p><p>Файлы .avi, .mkv</p><p>Я пробовал использовать еще 1 скрипт с форума (он еще и копирует) - он действительно выдает ошибку.</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-09T11:58:29Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41385#p41385</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41383#p41383" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>bnp322 пишет:</cite><blockquote><p>если файл еще копируется,</p></blockquote></div><p>Как и чем копируется файл? У меня такой ошибки не возникало ни разу, т.е. уведомление о событии возникало только после закрытия файла (не важно, при создании, копировании или перемещении).</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-09T11:30:31Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41383#p41383</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41381#p41381" />
			<content type="html"><![CDATA[<p>То, что я хотел получилось вот так:<br /></p><div class="codebox"><pre><code>strDir = &quot;c:\temp&quot; &#039; каталог, за которым следим
strComputer = &quot;.&quot; &#039; имя компьютера; &quot;.&quot; означает текущий компьютер
&#039;==============================================================================
strDirSlash = Replace(strDir, &quot;\&quot;, &quot;\\\\&quot;)
strNamespace = &quot;Root\CIMV2&quot;
&#039; Подключаемся к пространству имен
Set objService = GetObject(&quot;WinMgmts:\\&quot; &amp; strComputer &amp; &quot;\&quot; &amp; strNamespace)
Set objSink = WScript.CreateObject(&quot;WbemScripting.SWbemSink&quot;, &quot;Sink_&quot;)

objService.ExecNotificationQueryAsync objSink, _
    &quot;SELECT * FROM __InstanceCreationEvent WITHIN 5 WHERE &quot; &amp;_
    &quot;Targetinstance ISA &#039;CIM_DirectoryContainsFile&#039; and &quot; &amp;_
    &quot;TargetInstance.GroupComponent= &quot; &amp;_
    &quot;&#039;Win32_Directory.Name=&quot;&quot;&quot; &amp; strDirSlash &amp; &quot;&quot;&quot;&#039;&quot;

While 1
    WScript.Sleep 1000
Wend

&#039; Процедура-обработчик события OnObjectReady объекта sWbemSink
Sub Sink_OnObjectReady(oOutParams, oContext)


strMessage = objService.Get(oOutParams.TargetInstance.PartComponent).FileName _
&amp; &quot;.&quot; &amp; objService.Get(oOutParams.TargetInstance.PartComponent).Extension

Wscript.Echo strMessage


End Sub</code></pre></div><p>Но тут есть проблема, если файл еще копируется, то возникает ошибка.<br />Как в текущий скрипт встроить еще и цикл, который будет проверять файлы на неизменность в течении ~10 сек и лишь затем переходить к анализу новизны.</p><p>На форуме я нашел похожий скрипт, а как их объединить ...<br /></p><div class="codebox"><pre><code>strComputer = &quot;.&quot;
Set objWMIService = GetObject(&quot;winmgmts:\\&quot; &amp; strComputer &amp; &quot;\root\CIMv2&quot;) 
Set objEvents = objWMIService.ExecNotificationQuery _
(&quot;SELECT * FROM __InstanceModificationEvent WITHIN 5 WHERE &quot; &amp; _
    &quot;TargetInstance ISA &#039;CIM_DataFile&#039;&quot; &amp; _
    &quot; AND TargetInstance.Drive = &#039;c:&#039;&quot; &amp; _
    &quot; AND TargetInstance.Extension = &#039;txt&#039;&quot; &amp; _
    &quot; AND TargetInstance.Path = &#039;\\1\\&#039;&quot;)
Wscript.Echo &quot;Поиск ...&quot;
Do While(True)
    Set objReceivedEvent = objEvents.NextEvent 
    WScript.Echo &quot;File modifed: &quot; &amp; objReceivedEvent.TargetInstance.FileName
Loop</code></pre></div>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-09T11:12:33Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41381#p41381</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41205#p41205" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>bnp322 пишет:</cite><blockquote><p>Если не трудно, то где растолковывается о</p></blockquote></div><p>Ссылки и порядок обучения <a href="http://forum.script-coding.com/viewtopic.php?pid=24117#p24117">здесь</a>. Полное описание — WMI SDK — в MSDN.<br /></p><div class="quotebox"><cite>bnp322 пишет:</cite><blockquote><p>…а как получают лишь имя?</p></blockquote></div><p>Смотрим опять же в <a href="http://msdn.microsoft.com/en-us/library/aa387236(VS.85).aspx">CIM_DataFile</a>, берём и склеиваем свойства «.FileName» и «.Extension»:<br /></p><div class="codebox"><pre><code>WScript.Echo objSWbemObjectEx.FileName &amp; &quot;.&quot; &amp; objSWbemObjectEx.Extension</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-03T18:53:45Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41205#p41205</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41194#p41194" />
			<content type="html"><![CDATA[<p>Интересно!&nbsp; <br />Есть Drive, есть, Path и есть Name которое фактически равно Drive + Path + имя, а как получают лишь имя? <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-03T11:46:04Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41194#p41194</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBScript: Помогите модифицировать скрипт слежения за созданием файлов]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=41192#p41192" />
			<content type="html"><![CDATA[<p>Спасибо!<br />Если не трудно, то где растолковывается о</p><p>objSWbemObjectEx</p><p>objService.Get</p><p>Многочисленные параметры oOutParams.TargetInstance.PartComponent</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>http://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-03T11:36:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=41192#p41192</id>
		</entry>
</feed>
