<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS проверка существования файла по маске]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7535&amp;type=atom" />
	<updated>2012-09-11T03:45:17Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7535</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS проверка существования файла по маске]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=63724#p63724" />
			<content type="html"><![CDATA[<p>в виндузе для этого есть планировщик задач</p>]]></content>
			<author>
				<name><![CDATA[smaharbA]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=2911</uri>
			</author>
			<updated>2012-09-11T03:45:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=63724#p63724</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS проверка существования файла по маске]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=63704#p63704" />
			<content type="html"><![CDATA[<p>Спасибо за ответы и скрипты! Они работают, но как сделать так что бы он сканировал каждые 5 минут на входящие файлы? Как сделать что бы скрипт начинал за ново работать с задержкой например 5 минут? Надо использовать Sleep Do loop? Или что то другое? Насколько я понял goto нет... или проще использовать планировщик виндовс?</p>]]></content>
			<author>
				<name><![CDATA[xsanekk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27386</uri>
			</author>
			<updated>2012-09-10T13:38:30Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=63704#p63704</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS проверка существования файла по маске]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=63604#p63604" />
			<content type="html"><![CDATA[<p><strong>xsanekk</strong>, проверку наличия файлов с заданным расширением в заданной папке можно выполнить так:<br /></p><div class="codebox"><pre><code>strPath = &quot;D:\Temp&quot;
Set objFolderItems = CreateObject(&quot;Shell.Application&quot;).NameSpace(strPath).Items
objFolderItems.Filter 64 + 128, &quot;*.iso&quot;
MsgBox &quot;Кол-во элементов: &quot; &amp; objFolderItems.Count</code></pre></div><p>Если задача решается с целью получения уведомления о появлении некоего файла в заданной папке, то для этого лучше использовать иной инструмент: WMI-подписку на соответствующее системное событие.<br />Ищите на форуме темы по ключам <span style="color: blue">CIM_DirectoryContainsFile</span> и <span style="color: blue">__InstanceCreationEvent</span>.</p>]]></content>
			<author>
				<name><![CDATA[Dmitrii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=13351</uri>
			</author>
			<updated>2012-09-07T03:25:17Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=63604#p63604</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS проверка существования файла по маске]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=63596#p63596" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Fedor пишет:</cite><blockquote><p>Не уверен, что допустимо использовать маску файлов</p></blockquote></div><p>Совершенно верно. </p><p>Лучше, на мой взгляд, для поиска файлов, соответствующих заданному шаблону, использовать полноценное регулярное выражение. </p><p>Если необходимо делать поиск по маске (*.RTF), то надо преобразовать маску в регулярное выражение. Возможно существуют простые средства в VBS по преобразованию маски в правильное регулярное выражение, но оно мне не знакомо. Поэтому я предлагаю использовать следующую функцию:<br /></p><div class="codebox"><pre><code>
&#039; функция преобразования шаблонов DOS вида *.RTF
&#039; в правильное регистро-независимое регулярное выражение вида .*\.RTF
function pattern2regexp(pattern)
	dim re
	set re = new RegExp
	re.Pattern = &quot;([\(\)\{\}\[\]\|\\\/\.\^\$])&quot;
	re.Global = True

	pattern = re.Replace(pattern, &quot;\$1&quot;)
	pattern = Replace(pattern, &quot;*&quot;, &quot;.*&quot;)
	pattern = Replace(pattern, &quot;?&quot;, &quot;.&quot;)

	set re = new RegExp
	re.Pattern = pattern
	re.IgnoreCase = true

	set pattern2regexp = re
end function</code></pre></div><p>В дальнейшем результат функции можно использовать для поиска определенных файлов, соответствующих заданному шаблону:<br /></p><div class="codebox"><pre><code>
pattern = &quot;*.RTF&quot;
set re = pattern2regexp(pattern)
...
if re.Test(filename) then
	WScript.Echo &quot;File exists: &quot; &amp; filename
end if</code></pre></div>]]></content>
			<author>
				<name><![CDATA[Rumata]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24846</uri>
			</author>
			<updated>2012-09-06T22:00:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=63596#p63596</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS проверка существования файла по маске]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=63585#p63585" />
			<content type="html"><![CDATA[<p>Есть увереность что скрипт различит:<br /><strong>file</strong> = &quot;O:\instr\1\*.RTF&quot;&nbsp; и&nbsp; For each <strong>File</strong> In Files? <br />Как мне помнится VBS не различает регистр букв в переменных, соответственно проверяется наличие текущего файла из коллекции, а не соответствие его маске.<br />Называй вещи своими именами, например так: mask_file= &quot;O:\instr\1\*.RTF&quot;</p><p> Что делает данная строка <strong>FSO.FileExists(file)</strong>? Не уверен, что допустимо использовать маску файлов, а не конкретный файл. Если все таки пройдет использование маски, тогда вовсе не нужно проверять каждый файл на соответствие маске достаточно написать так:<br /></p><div class="codebox"><pre><code>Dim FSO,FileName                                              &#039;Объявляем переменные
Set FSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;) &#039;Создаем объект FileSystemObject
set WshShell = CreateObject(&quot;WScript.Shell&quot;) 
iDir = &quot;O:\instr\1\&quot;                                     &#039;Директория где проверяем наличие файла
mask_file = &quot;O:\instr\1\*.RTF&quot;                             &#039;Маска файлов

i=0 
do while i = 0
WshShell.Sleep 5000                                         &#039;Сколько ждать? (1000=1секунда)
if  FSO.FileExists(mask_file)  Then 
  MsgBox (&quot;Пришел файл!&quot;)                                     
end if
loop</code></pre></div><p>Собственно зачем весь сыр-бор? Только&nbsp; для того, что бы уведомить пользователя о приходе файла?</p>]]></content>
			<author>
				<name><![CDATA[Fedor]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=28233</uri>
			</author>
			<updated>2012-09-06T20:34:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=63585#p63585</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[VBS проверка существования файла по маске]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=63576#p63576" />
			<content type="html"><![CDATA[<p>Привет всем! Помогите пожалуйста, вот написал скрипт. Проверяет файлы из заданной директории по маске, в папке где проверяется подпапка, ее нельзя перемещать.<br /></p><div class="codebox"><pre><code>Dim FSO,FileName                                              &#039;Объявляем переменные
Set FSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;) &#039;Создаем объект FileSystemObject
iDir = &quot;O:\instr\1\&quot;                                     &#039;Директория где проверяем наличие файла
file = &quot;O:\instr\1\*.RTF&quot;                             &#039;Маска файлов

i=0 
do while i = 0

Set Files = FSO.GetFolder(iDir).Files

set WshShell = CreateObject(&quot;WScript.Shell&quot;) 
WScript.Sleep 5000                                         &#039;Сколько ждать? (1000=1секунда)

For each File In Files
if  FSO.FileExists(file)  Then 
fl=fl+1
end if
next
if fl&lt;&gt;0 then
    MsgBox (&quot;Пришел файл!&quot;)                                     &#039;Выводим сообщение
end if
loop</code></pre></div><p>вот приходит файл, появляется сообщение, но если его удалить, сообщение так и выводится! Помогите! В VBS недавно пишу))</p>]]></content>
			<author>
				<name><![CDATA[xsanekk]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27386</uri>
			</author>
			<updated>2012-09-06T15:33:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=63576#p63576</id>
		</entry>
</feed>
