<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=5155&amp;type=atom" />
	<updated>2013-12-27T17:42:54Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=5155</id>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=78565#p78565" />
			<content type="html"><![CDATA[<p>Недавно решал подобную проблему. Угробил два дня. Может кому понадобиться результат.<br />Умеет: искать новые файлы на FTP, качать их, пересылать с помощью GW.<br /></p><div class="codebox"><pre><code>dim cn, rs, strComp
dim fso, tf, fn, rc, tnam
dim count, sa
Dim ogwApp, ogwRootAcct, ogwNewMessage
&#039;качаем список файлов
Set sh = CreateObject(&quot;wscript.shell&quot;)
Ft = &quot;ftp.exe -s:&quot; + chr(34) + &quot;d:\_EPI\FTP_SCRIPT\urb.txt&quot; + chr(34) + &quot; 10.10.1.3&quot;
sh.Run Ft, 0, -1
Set sh = Nothing
&#039;качаем список файлов ftp2
Set sh = CreateObject(&quot;wscript.shell&quot;)
Ft = &quot;ftp.exe -s:&quot; + chr(34) + &quot;d:\_EPI\FTP_SCRIPT\big.txt&quot; + chr(34) + &quot; 10.10.1.2&quot;
sh.Run Ft, 0, -1
Set sh = Nothing
&#039;выбираем новые
set cn = CreateObject(&quot;ADODB.Connection&quot;)
cn.connectionstring = &quot;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\_EPI\FTP_SCRIPT\ftp.mdb&quot;
cn.open
set rs = CreateObject(&quot;ADODB.Recordset&quot;)
rs.CursorType = 3
rs.LockType = 3
rs.Open &quot;SELECT t0802_UrbNew.File FROM t0802_UrbNew LEFT JOIN t0801_UrbDown ON t0802_UrbNew.File = t0801_UrbDown.fileO WHERE (((t0801_UrbDown.fileO) Is Null));&quot;,cn
&#039;пишем конфиг для скачки
set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
set tf = fso.CreateTextFile(&quot;d:\_EPI\FTP_SCRIPT\UrbDown.txt&quot;, true)
tf.WriteLine &quot;login&quot;
tf.WriteLine &quot;pass&quot;
Do While Not rs.EOF
tnam = Right(rs.fields(&quot;file&quot;).value, Len(rs.fields(&quot;file&quot;).value) - instrrev(rs.fields(&quot;file&quot;).value,&quot;/&quot;))
tf.WriteLine &quot;get &quot; + rs.fields(&quot;file&quot;).value + &quot; d:\_EPI\FTP_SCRIPT\send\&quot; + tnam
rs.MoveNext
Loop
rs.close
tf.WriteLine &quot;bye&quot;
&#039;выбираем новые для ftp2
rs.Open &quot;SELECT t0803_Big_new.file FROM t0803_Big_new LEFT JOIN t0801_UrbDown ON t0803_Big_new.file = t0801_UrbDown.fileO WHERE (((t0801_UrbDown.fileO) Is Null));&quot;,cn
&#039;пишем конфиг для скачки 2
set fso = CreateObject(&quot;Scripting.FileSystemObject&quot;)
set tf = fso.CreateTextFile(&quot;d:\_EPI\FTP_SCRIPT\BigDown.txt&quot;, true)
tf.WriteLine &quot;log2&quot;
tf.WriteLine &quot;pass2&quot;
Do While Not rs.EOF
tnam = Right(rs.fields(&quot;file&quot;).value, Len(rs.fields(&quot;file&quot;).value) - instrrev(rs.fields(&quot;file&quot;).value,&quot;/&quot;))
tf.WriteLine &quot;get &quot; + rs.fields(&quot;file&quot;).value + &quot; d:\_EPI\FTP_SCRIPT\send\&quot; + tnam
rs.MoveNext
Loop
rs.close
tf.WriteLine &quot;bye&quot;
&#039;качаем нужное
Set sh = CreateObject(&quot;wscript.shell&quot;)
Ft = &quot;ftp.exe -s:&quot; + chr(34) + &quot;d:\_EPI\FTP_SCRIPT\UrbDown.txt&quot; + chr(34) + &quot; 10.10.1.3&quot;
sh.Run Ft, 0, -1
Set sh = Nothing
&#039;качаем нужное ftp2
Set sh = CreateObject(&quot;wscript.shell&quot;)
Ft = &quot;ftp.exe -s:&quot; + chr(34) + &quot;d:\_EPI\FTP_SCRIPT\BigDown.txt&quot; + chr(34) + &quot; 10.10.1.2&quot;
sh.Run Ft, 0, -1
Set sh = Nothing
&#039;проверяем какие файлы скачали, пишем в таблицу
Set count = CreateObject(&quot;scripting.filesystemobject&quot;)
aCoun = count.GetFolder(&quot;d:\_EPI\FTP_SCRIPT\send\&quot;).files.count
if aCoun &gt; 0 then
set files = count.getfolder(&quot;d:\_EPI\FTP_SCRIPT\send\&quot;).files
rs.open &quot;file&quot;, cn
for each file in files
&#039;msgbox file
strComp = Right(file, Len(file) - instrrev(file,&quot;\&quot;))
rs.AddNew
if left(strComp,5) = &quot;17223&quot; then &#039;востанавливаем исходный путь коряво, но для конкретного случая пойдет
rs.fields(&quot;path&quot;).value = &quot;DARHIV/IN/&quot; + strComp
else
rs.fields(&quot;path&quot;).value = &quot;ARHIV_M/IN/&quot; + strComp
end if
rs.fields(&quot;fileN&quot;).value = strComp
rs.Update
next
rs.close
&#039;пишем в список загруженных, то что скачалось
rs.open &quot;INSERT INTO t0801_UrbDown (fileO) SELECT file.path FROM file;&quot;, cn
rs.open &quot;DELETE file.* FROM file;&quot;, cn
set rs = nothing
set cn = nothing
&#039;создаем письмо GW
Set ogwApp = CreateObject(&quot;NovellGroupWareSession&quot;)
Set ogwRootAcct = ogwApp.Login()
Set ogwNewMessage = ogwRootAcct.MailBox.Messages.Add(&quot;GW.MESSAGE.MAIL&quot;, 4)
ogwNewMessage.BodyText = &quot;Просмотрите, может будет интересно&quot;
ogwNewMessage.Subject = &quot;Новые файлы на FTP&quot;
ogwNewMessage.Recipients.Add &quot;admin@admin.by&quot;, NGW, egwTo
for each file in files
sa = file
ogwNewMessage.Attachments.Add sa
next
ogwNewMessage.Send
Set ogwRootAcct = Nothing
Set ogwNewMessage = Nothing
Set ogwApp = Nothing
end if
&#039;Перемещаем файлы в каталог где они нужны 
if aCoun &gt; 0 then
for each file in files
strComp = &quot;d:\_EPI\imp\&quot; + Right(file, Len(file) - instrrev(file,&quot;\&quot;))
file.copy strComp,true
file.delete
next
end if
set files = nothing
Set count = nothing</code></pre></div><p>Описание работы:<br />Получает список файлов с FTP<br /></p><div class="codebox"><pre><code>Ft = &quot;ftp.exe -s:&quot; + chr(34) + &quot;d:\_EPI\FTP_SCRIPT\urb.txt&quot; + chr(34) + &quot; 10.10.1.3&quot;</code></pre></div><p>Параметры запуска ftp.exe - файл urb.txt примерно следующего содержания<br /></p><div class="codebox"><pre><code>
login
password
ls /archiv/new d:\_EPI\FTP_SCRIPT\t0802_UrbNew.txt
bye
</code></pre></div><p>результат - список файлов, лежащих на FTP пишется в файл d:\_EPI\FTP_SCRIPT\t0802_UrbNew.txt</p><p>для хранения списков уже скачанного ранее файлов используется ftp.mdb. таблицы t0801_UrbDown (список скачанного), t0803_Big_new, t0802_UrbNew (таблицы связанные с текстовыми файлам t0802_UrbNew, BigNew.txt). file - временная таблица</p><p>С помощью SQL получаем список новых файлов. Из результатов запроса формируем список команд для ftp.exe для загрузки файлов.<br />tf.WriteLine &quot;login&quot;<br />tf.WriteLine &quot;pass&quot;<br />tf.WriteLine &quot;get &quot; + rs.fields(&quot;file&quot;).value + &quot; d:\_EPI\FTP_SCRIPT\send\&quot; + tnam<br />tf.WriteLine &quot;bye&quot;</p><p>В таблицу file (поля path, fileN) пишем список файлов находящихся в папке загрузки d:\_EPI\FTP_SCRIPT\send\.</p><p>Добавляем имена загруженных файлов в таблицу t0801_UrbDown, что бы повторно не качать. <br />Чистим временную таблицу FILE</p><p>Далее используя Novell GroupWise отправлячем скачанные файлы получателям. (На компе есть постоянно открытая сессия GW, поэтому процедура отправки сильно сокращена)</p><p>Перемещаем файлы в каталог где они хранятся постоянно, переписывая одноименные.</p>]]></content>
			<author>
				<name><![CDATA[inionis]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=29719</uri>
			</author>
			<updated>2013-12-27T17:42:54Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=78565#p78565</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42115#p42115" />
			<content type="html"><![CDATA[<p>Я тоже так думал. Очевидно, такова реализация. Значит пора переходить на сторонние компоненты: <a href="http://forum.script-coding.com/viewtopic.php?id=2820">VBScript: Работа с протоколом FTP с помощью компонента Chilkat FTP</a>, <a href="http://forum.script-coding.com/viewtopic.php?pid=19869#p19869">ещё</a> (не пробовал), ну и, конечно, «Microsoft.XMLHTTP».</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-23T17:57:23Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42115#p42115</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=42105#p42105" />
			<content type="html"><![CDATA[<p>В скрипт поста 28 имеет нюанс:</p><p>Он никогда не дает ответ:<br />&nbsp; WScript.Echo &quot;Not found&quot;<br />Который очевидно должен происходить.<br /> Ни с пустой папкой ни с отсутствием самой папки!?</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-23T15:45:18Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=42105#p42105</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41832#p41832" />
			<content type="html"><![CDATA[<p>Получилось! <img src="//forum.script-coding.com/img/smilies/big_smile.png" width="15" height="15" /><br /></p><div class="codebox"><pre><code>If Not objFolder Is Nothing Then

    For Each objFolderItem In objFolder.Items
    If DateDiff(&quot;d&quot;, objFolderItem.ModifyDate, Now) &lt; 7 Then

TextStream.WriteLine objFolderItem.ModifyDate &amp;&quot;    &quot;&amp; objFolderItem.Size &amp;&quot;    &quot;&amp; objFolderItem.Name

 End If

    Next
   
    Set objFolder = Nothing
Else
    WScript.Echo &quot;Not found&quot;

End If
Set objShell  = Nothing
TextStream.Close
WScript.Quit 0</code></pre></div><p>Помогите с постом 25 ( как с помощью vbs сделать аналог команды fc old_list.txt new_list.txt &gt; diff_list.txt).<br />И как в текущем примере добавить сортировку, например по&nbsp; objFolderItem.Size.<br />Пожалуйста!</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-17T12:06:58Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41832#p41832</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41823#p41823" />
			<content type="html"><![CDATA[<p>Я пробую:<br /></p><div class="codebox"><pre><code>Set FSO = CreateObject(&quot;Scripting.FileSystemObject&quot;)
Set TextStream = FSO.CreateTextFile(&quot;C:\Documents and Settings\bnp\Рабочий стол\Улан_Уде.txt&quot;)

If Not objFolder Is Nothing Then

If  DateDiff(&quot;d&quot;, objFolderItem.ModifyDate, Now) &lt; 7 Then

    For Each objFolderItem In objFolder.Items

TextStream.WriteLine objFolderItem.ModifyDate &amp;&quot;    &quot;&amp; objFolderItem.Size &amp;&quot;    &quot;&amp; objFolderItem.Name

    Next
   
    Set objFolder = Nothing
Else
    WScript.Echo &quot;Not found&quot;

End If
End If
Set objShell  = Nothing
TextStream.Close
WScript.Quit 0</code></pre></div><p>А оно выдает ошибку:<br />Строка:	16<br />Символ:	1<br />Ошибка:	Требуется объект: &#039;&#039;<br />Код:	800A01A8</p><br /><p>А я чайник!:|</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-17T10:02:45Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41823#p41823</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41818#p41818" />
			<content type="html"><![CDATA[<p>Теперь Вы не поняли мой намёк. Попробуйте не просто объект (и. соответственно, его свойство по умолчанию), а конкретно указанное свойство:<br /></p><div class="codebox"><pre><code>…DateDiff(&quot;d&quot;, objFolderItem.ModifyDate, Now)…</code></pre></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-17T09:26:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41818#p41818</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41816#p41816" />
			<content type="html"><![CDATA[<p>Ну да! Дату модификации.</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-17T09:04:46Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41816#p41816</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41809#p41809" />
			<content type="html"><![CDATA[<div class="quotebox"><blockquote><p>взять objFolderItem.<strong><span style="color: orange">ModifyDate</span></strong></p></blockquote></div><div class="quotebox"><blockquote><p>Я пробовал … objFolderItem…</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-11-17T08:10:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41809#p41809</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41806#p41806" />
			<content type="html"><![CDATA[<p>У файлов на фтп Вы &quot;берете&quot; параметр&nbsp; objFolderItem.Name, а если еще взять objFolderItem.ModifyDate , то можно получить и дату последней модификации объектов (я пробовал работает). <br />Используя DateDiff(), очевидно, можно выводить не весь список&nbsp; objFolderItem , а лишь те, что &quot;моложе&quot; 7 дней (к примеру).</p><p>Я пробовал вместо Вашего IF ...&nbsp; вставить свое </p><div class="codebox"><pre><code>If DateDiff(&quot;d&quot;, objFolderItem, Now) &lt; 7 Then</code></pre></div><p>,</p><p>Но получается весь список с датами 2 месяцев.</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-17T07:53:02Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41806#p41806</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41796#p41796" />
			<content type="html"><![CDATA[<p>Ваш вопрос не понятен.</p>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-17T05:37:15Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41796#p41796</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41790#p41790" />
			<content type="html"><![CDATA[<p>alexii</p><p>А в Ваш код как внести конструкцию сразу отбрасывающую слишком старое, что-то типа дополнительного условия:<br /></p><div class="codebox"><pre><code>If DateDiff(&quot;d&quot;, objFolderItem, Now) &lt; 10 Then</code></pre></div>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-17T04:00:50Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41790#p41790</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41770#p41770" />
			<content type="html"><![CDATA[<p>О как здорово!<br />В чистом виде имена файлов и папок, а как через vbs сделать аналогию </p><div class="codebox"><pre><code>fc old_list.txt new_list.txt &gt; diff_list.txt</code></pre></div><p>Т.е получить разность двух списков.<br />Подскажите?</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-16T17:53:01Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41770#p41770</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41764#p41764" />
			<content type="html"><![CDATA[<div class="codebox"><pre><code>Option Explicit

Dim objShell
Dim objFolder
Dim objFolderItem


Set objShell  = WScript.CreateObject(&quot;Shell.Application&quot;)
Set objFolder = objShell.NameSpace(&quot;ftp://ftp.microsoft.com/&quot;)

If Not objFolder Is Nothing Then
    For Each objFolderItem In objFolder.Items
        WScript.Echo objFolderItem.Name
    Next
    
    Set objFolder = Nothing
Else
    WScript.Echo &quot;Not found&quot;
End If

Set objShell  = Nothing

WScript.Quit 0</code></pre></div><div class="quotebox"><blockquote><p>bussys<br />deskapps<br />developr<br />KBHelp<br />MISC<br />MISC1<br />peropsys<br />Products<br />PSS<br />ResKit<br />Services<br />Softlib</p></blockquote></div>]]></content>
			<author>
				<name><![CDATA[alexii]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=1844</uri>
			</author>
			<updated>2010-11-16T14:09:26Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41764#p41764</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41762#p41762" />
			<content type="html"><![CDATA[<p>Да нет там тонн!<br />Есть примеры загрузки конкретных файлов с ftp и http и страницы.<br />О&nbsp; подобном команде DIR, речи там не было.</p>]]></content>
			<author>
				<name><![CDATA[bnp322]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26392</uri>
			</author>
			<updated>2010-11-16T13:14:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41762#p41762</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: VBS/CMD: Сканирование FTP сервера на предмет новых файлов]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=41758#p41758" />
			<content type="html"><![CDATA[<p>По ссылке в #24 посту пробовали переходить ?<br />Там тонны кода как это можно сделать...</p>]]></content>
			<author>
				<name><![CDATA[Евген]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=25253</uri>
			</author>
			<updated>2010-11-16T11:09:29Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=41758#p41758</id>
		</entry>
</feed>
