<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=2820</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=2820&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP».]]></description>
		<lastBuildDate>Sun, 22 Feb 2009 15:47:30 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19866#p19866</link>
			<description><![CDATA[<p>Пример закачивания файлов на FTP по маске:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.domain.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passw&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir &quot;WWW&quot;
numFilesUploaded = oFtp.MPutFiles(&quot;c:/temp/*.txt&quot;)
WScript.Echo &quot;закачано файлов - &quot; &amp; numFilesUploaded
oFtp.Disconnect</code></pre></div><p>Пример удаления файлов на FTP по маске:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.domain.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passw&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir &quot;WWW&quot;
numDeleted = oFtp.DeleteMatching(&quot;*.txt&quot;)
WScript.Echo &quot;удалено файлов - &quot; &amp; numDeleted
oFtp.Disconnect</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Sun, 22 Feb 2009 15:47:30 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19866#p19866</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19861#p19861</link>
			<description><![CDATA[<p>Создание каталога на FTP:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;host.name.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passw&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir &quot;WWW&quot;
oFtp.CreateRemoteDir(&quot;newDirName&quot;)
oFtp.Disconnect</code></pre></div><p>Удаление каталога производится полностью аналогично, методом <strong>RemoveRemoteDir(&quot;dirName&quot;)</strong>.<br />Переименование файла производится методом <strong>RenameRemoteFile(existingFilename, newFilename)</strong>.<br />Удаление файла производится методом <strong>DeleteRemoteFile(existingFilename)</strong>.<br />Свойство <strong>Version</strong> позволяет узнать версию COM-сервера.<br />Свойство COM-сервера <strong>IsConnected</strong> равно 1, если есть подключение к FTP-серверу.<br />Получение листинга FTP-каталога в формате XML:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.microsoft.com&quot;
oFtp.Username = &quot;&quot;
oFtp.Password = &quot;&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir &quot;ResKit/y2kfix/&quot;
WScript.Echo oFtp.GetCurrentRemoteDir()
WScript.Echo oFtp.GetCurrentDirListing(&quot;*&quot;)
oFtp.Disconnect</code></pre></div><p>Пример скачивания файлов с FTP по маске:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.microsoft.com&quot;
oFtp.Username = &quot;&quot;
oFtp.Password = &quot;&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir &quot;ResKit/y2kfix/&quot;
numFilesDownloaded = oFtp.MGetFiles(&quot;*.txt&quot;, &quot;c:/temp&quot;)
WScript.Echo &quot;закачано файлов - &quot; &amp; numFilesDownloaded
oFtp.Disconnect</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Sun, 22 Feb 2009 14:53:52 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19861#p19861</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19836#p19836</link>
			<description><![CDATA[<p>Режим передачи данных по умолчанию является &quot;Активным&quot;, в противоположность &quot;Пассивному&quot;. Вы можете изменить его на Пассивный, устанавливая свойство <strong>Passive</strong> COM-сервера в единицу.</p><p>Свойство <strong>Port</strong> COM-сервера позволяет указать числовое значение порта FTP-сервера (например, 21).</p><p>Создание файла на FTP из текстовой переменной:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.server.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passwd&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir(&quot;WWW&quot;)
remoteFilename = &quot;test.html&quot;
oFtp.PutFileFromTextData remoteFilename, &quot;&lt;h1&gt;Текст заголовка&lt;/h1&gt;&quot;
oFtp.Disconnect</code></pre></div><p>Получение содержимого текстового файла с FTP:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.server.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passw&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir(&quot;WWW&quot;)
remoteFilename = &quot;test.html&quot;
fileContents = oFtp.GetRemoteFileTextData(remoteFilename)
oFtp.Disconnect
If fileContents = vbNullString Then
    WScript.Echo &quot;файл не найден&quot;
Else
    WScript.Echo fileContents
End If</code></pre></div><p>Получение списка файлов в каталоге:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.microsoft.com&quot;
oFtp.Username = &quot;&quot;
oFtp.Password = &quot;&quot;
oFtp.Connect()
oFtp.ChangeRemoteDir &quot;ResKit/y2kfix/&quot;
oFtp.ListPattern = &quot;*&quot;
n = oFtp.NumFilesAndDirs
If n &gt; 0 Then
    For i = 0 To n - 1
        name = oFtp.GetFilename(i)
        size = oFtp.GetSize(i) &#039; в байтах
        If (oFtp.GetIsDirectory(i) = 1) Then
            dir = &quot;sub-directory&quot;
        Else
            dir = &quot;file&quot;
        End If
        createt = oFtp.GetCreateTime(i)
        last = oFtp.GetLastAccessTime(i)
        modt = oFtp.GetLastModifiedTime(i)
        WScript.Echo name, size, dir, createt, last, modt
    Next
End If
oFtp.Disconnect</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Sat, 21 Feb 2009 17:19:05 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19836#p19836</guid>
		</item>
		<item>
			<title><![CDATA[Re: VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19834#p19834</link>
			<description><![CDATA[<p>Более развёрнутый пример получения одного файла с FTP-сервера. Сравнивается дата/время; скачивается, только если разница больше минуты (основные типы серверов отдают время с точностью до минуты) и удалённый файл более новый. Проверяется доступное место на диске и отражается прогресс скачивания в процентах.<br />Проверялось на серверах:<br />* Microsoft IIS 5.0, 5.1, 6.0;<br />* FileZilla Server 0.9.28;<br />* freeFTPd 1.0.11.0.<br /></p><div class="codebox"><pre><code>Option Explicit

Dim objFTP
Dim objFSO

Dim strRemoteFullFileName
Dim strLocalPath

Dim strRemotePath
Dim strRemoteFileName
Dim strLocalFullFileName
Dim strTempFileName

&#039; Полный путь к удалённому файлу
strRemoteFullFileName = &quot;/ResKit/win2000/sysdiff.zip&quot;
&#039; Путь к локальной папке
strLocalPath          = &quot;c:\temp\&quot;

Set objFTP = WScript.CreateObject(&quot;ChilkatFtp.ChilkatFtp&quot;, &quot;FTP_&quot;)
Set objFSO = WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;)

strRemotePath        = objFSO.GetParentFolderName(strRemoteFullFileName)
strRemoteFileName    = objFSO.GetFileName(strRemoteFullFileName)

strLocalFullFileName = objFSO.BuildPath(strLocalPath, strRemoteFileName)
strTempFileName      = strRemoteFileName &amp; &quot;.tmp&quot;


With objFTP
    .Hostname = &quot;ftp.microsoft.com&quot;
    .Username = &quot;&quot; &#039; anonymous
    .Password = &quot;&quot; &#039; empty password
    
    .Connect
    
    If .IsConnected Then
        &#039; Если ftp-сервер не поддерживает CWD по полному имени,
        &#039; нужно делить путь на отдельные каталоги и делать отдельные переходы по каждому
        .ChangeRemoteDir strRemotePath
        
        .ListPattern = strRemoteFileName
        
        If .NumFilesAndDirs &lt;&gt; 0 Then
            WScript.Echo &quot;Remote [&quot; &amp; strRemoteFullFileName &amp; &quot;]&quot;
            WScript.Echo &quot;    DateLastModified: &quot;, .GetLastModifiedTime(0)
            WScript.Echo &quot;    DateCreated:      &quot;, .GetCreateTime(0)
            WScript.Echo &quot;    DateLastAccessed: &quot;, .GetLastAccessTime(0)
            WScript.Echo
            If objFSO.FileExists(strLocalFullFileName) Then
                WScript.Echo &quot;Locale [&quot; &amp; strLocalFullFileName &amp; &quot;]&quot;
                WScript.Echo &quot;    DateLastModified: &quot;, objFSO.GetFile(strLocalFullFileName).DateLastModified
                WScript.Echo &quot;    DateCreated:      &quot;, objFSO.GetFile(strLocalFullFileName).DateCreated
                WScript.Echo &quot;    DateLastAccessed: &quot;, objFSO.GetFile(strLocalFullFileName).DateLastAccessed
                WScript.Echo
                
                If DateDiff(&quot;n&quot;, .GetLastModifiedTime(0), objFSO.GetFile(strLocalFullFileName).DateLastModified) &lt; -1 Then
                    objFSO.GetFile(strLocalFullFileName).Name = strTempFileName
                    
                    If DownloadFile(objFTP, strRemoteFileName, strLocalFullFileName) Then
                        objFSO.GetFile(objFSO.BuildPath(strLocalPath, strTempFileName)).Delete True
                    Else
                        objFSO.GetFile(objFSO.BuildPath(strLocalPath, strTempFileName)).Name = strRemoteFileName
                    End If
                Else
                    WScript.Echo &quot;Nothing to do: property DateLastModified of local file [&quot; &amp; strLocalFullFileName &amp; &quot;] &quot; &amp; _
                        &quot; is newer or equal then remote file [&quot; &amp; strRemoteFullFileName &amp; &quot;].&quot;
                End If
            Else
                If DownloadFile(objFTP, strRemoteFileName, strLocalFullFileName) Then
                    
                Else
                    
                End If
            End If
        Else
            WScript.Echo &quot;Not found remote file [&quot; &amp; strRemoteFullFileName &amp; &quot;].&quot;
        End If
        
        .Disconnect
    Else
        WScript.Echo &quot;Can&#039;t connect to [&quot; &amp; .Hostname &amp; &quot;].&quot;
    End If
End With

Set objFSO = Nothing
Set objFTP = Nothing

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

&#039;=============================================================================
Function DownloadFile(objFTP, strRemote, strLocal)
    If objFSO.GetDrive(objFSO.GetDriveName(strLocal)).FreeSpace &gt; objFTP.GetSize(0) Then
        If objFTP.GetFile(strRemote, strLocal) Then
            If objFSO.FileExists(strLocal) Then
                WScript.Echo &quot;Success get remote file [&quot; &amp; strRemoteFullFileName &amp; &quot;] &quot; &amp; _
                    &quot;to local file [&quot; &amp; strLocalFullFileName &amp; &quot;].&quot;
                DownloadFile = True
            Else
                WScript.Echo &quot;Failure get remote file [&quot; &amp; strRemoteFullFileName &amp; &quot;] &quot; &amp; _
                    &quot;to local file [&quot; &amp; strLocalFullFileName &amp; &quot;].&quot;
                DownloadFile = False
            End If
        Else
            DownloadFile = False
        End If
    Else
        WScript.Echo &quot;Need more space on local drive [&quot; &amp; objFSO.GetDriveName(strLocal) &amp; &quot;].&quot;
        DownloadFile = False
    End If
End Function
&#039;=============================================================================

&#039;=============================================================================
Sub FTP_GetProgress(intPercent)
    WScript.Echo &quot;Progress: &quot; &amp; CStr(intPercent) &amp; &quot;%&quot;
End Sub
&#039;=============================================================================</code></pre></div><p>Автор примера — <strong>alexii</strong>.</p>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Sat, 21 Feb 2009 12:45:45 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19834#p19834</guid>
		</item>
		<item>
			<title><![CDATA[VBScript: работа с протоколом FTP с помощью компонента Chilkat FTP]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=19833#p19833</link>
			<description><![CDATA[<p>Бесплатный COM-сервер <a href="http://www.chilkatsoft.com/ftp-activex.asp">Chilkat FTP</a> позволяет:<br />&nbsp; * копировать файлы с/на ftp-сервер;<br />&nbsp; * копировать файлы с/на ftp-сервер непосредственно из памяти;<br />&nbsp; * создать каталоги, переименовать/удалить файлы/каталоги на ftp-сервере;<br />&nbsp; * получить листинг каталога на ftp-сервере в виде XML;<br />&nbsp; * работать с протоколом FTP в пассивном режиме.</p><p>Компонент доступен для скачивания на <a href="http://www.chilkatsoft.com/downloads.asp">этой</a> странице. Прямая <a href="http://www.chilkatsoft.com/download/FtpActiveX.msi">ссылка</a>. Дистрибутив (инсталлятор) имеет размер около 700 Кб. Примеры работы с компонентом можно найти <a href="http://www.example-code.com/vbscript/ftp.asp">здесь</a>, правда, только для платной версии компонента (платная и бесплатная версии по функционалу похожи).</p><p>Простейший пример закачки файла на FTP:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.host.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passw&quot;
res = oFtp.Connect()
If (res &lt;&gt; 1) Then
    WScript.Echo oFtp.LastErrorText
    WScript.Quit
End If
res = oFtp.ChangeRemoteDir(&quot;WWW&quot;)
If (res &lt;&gt; 1) Then
    WScript.Echo oFtp.LastErrorText
    WScript.Quit
End If
localFilename = &quot;C:\Temp\test.jpg&quot;
remoteFilename = &quot;test.jpg&quot;
res = oFtp.PutFile(localFilename, remoteFilename)
If (res &lt;&gt; 1) Then
    WScript.Echo oFtp.LastErrorText
    WScript.Quit
End If
oFtp.Disconnect</code></pre></div><p>Простейший пример скачивания файла с FTP, полностью аналогичен предыдущему, отличается только одним методом:<br /></p><div class="codebox"><pre><code>Set oFtp = CreateObject(&quot;ChilkatFTP.ChilkatFTP&quot;)
oFtp.Hostname = &quot;ftp.host.ru&quot;
oFtp.Username = &quot;vasya&quot;
oFtp.Password = &quot;passw&quot;
res = oFtp.Connect()
If (res &lt;&gt; 1) Then
    WScript.Echo oFtp.LastErrorText
    WScript.Quit
End If
res = oFtp.ChangeRemoteDir(&quot;WWW&quot;)
If (res &lt;&gt; 1) Then
    WScript.Echo oFtp.LastErrorText
    WScript.Quit
End If
localFilename = &quot;C:\Temp\test.jpg&quot;
remoteFilename = &quot;test.jpg&quot;
res = oFtp.GetFile(remoteFilename, localFilename)
If (res &lt;&gt; 1) Then
    WScript.Echo oFtp.LastErrorText
    WScript.Quit
End If
oFtp.Disconnect</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (The gray Cardinal)]]></author>
			<pubDate>Sat, 21 Feb 2009 12:43:03 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=19833#p19833</guid>
		</item>
	</channel>
</rss>
