<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; VBA: Перенос файлов с FTP и наоборот]]></title>
	<link rel="self" href="http://forum.script-coding.com/extern.php?action=feed&amp;tid=8941&amp;type=atom" />
	<updated>2013-11-26T12:49:00Z</updated>
	<generator>PunBB</generator>
	<id>http://forum.script-coding.com/viewtopic.php?id=8941</id>
		<entry>
			<title type="html"><![CDATA[VBA: Перенос файлов с FTP и наоборот]]></title>
			<link rel="alternate" href="http://forum.script-coding.com/viewtopic.php?pid=77565#p77565" />
			<content type="html"><![CDATA[<p>Добрый день!</p><p><strong>Необходимо выполнить :<br />- перенос (не копирование файлов) файлов по маске *.CP c FTP на локальный компьютер.<br />- перенос (не копирование файлов) файлов по маске *.CM с локального компьютера на FTP.</strong></p><p>Есть две папки на FTP - Inbox и Outbox. <br />- В папке Inbox хранятся файлы для обработки на локальной машине - файлы формата *.CP <br />- В папку Outbox возвращается обработанный файл формата *.CM<br />Есть две локальные папки - Inbox1 и Outbox1. <br />- В папку Inbox1 переносятся файлы *.CP из Inbox с FTP<br />- В папку Outbox1, после обработки на локальном компьютере, попадают обработанные файлы в формате *.CM</p><p>Получается такой процесс одного файла:<br />1 путь:<br />FTP - Inbox - 0013.CP<br />Local - Inbox1 - 0013.CP</p><p>Тут происходит обработка и он попадает в Outbox1</p><p>2 путь:<br />Local - Outbox1 - 0013.CM<br />FTP - Outbox - 0013.CM</p><p>Имена файлов неизвестны. Известен лишь формат.</p><p>Сначала была идея, чтоб одной командой mget *.CM получить, потом следующей командой удалить.<br />Но после получения всех файлов, в FTP папку Inbox могут попасть еще парочку файлов, и тогда следующей командой DEL удалятся и еще парочку файлов на обработку.</p><p>Необходимо выполнить :<br />- перенос (не копирование файлов) файлов по маске *.CP c FTP на локальный компьютер.<br />- перенос (не копирование файлов) файлов по маске *.CM с локального компьютера на FTP.</p><p>Был написан сначала код, при котором файлы копировались и выводился лог отчета FTP в файл, дабы по полученным данным вновь совершить вход на ftp и удалить перенесенные файлы. Тут же очищались некоторые строчки в ЛОГ файле.</p><div class="codebox"><pre><code>On Error Resume Next 
dim obj1
dim stroutput

Set objShell = CreateObject(&quot;WScript.Shell&quot;)

strCommand1 = &quot;ftp.exe -s:ftp1.1.txt&quot;

Set OBJ1 = objShell.exec(strCommand1)

strOutput = Replace(OBJ1.StdOut.ReadAll, VbCrLf &amp; &quot;PROMPT&quot;, &quot;&quot;)
strOutput = Replace(strOutput,&quot;Пользователь (10.200.0.182:(none)): Open 10.200.0.182 2121&quot; &amp; VbCrLf &amp; &quot;Интерактивный режим Выкл.&quot; &amp; VbCrLf, &quot;&quot;)

With WScript.CreateObject(&quot;Scripting.FileSystemObject&quot;).CreateTextFile(&quot;c:/scripts/ftp.log&quot;, True)
    .Write strOutput
    .Close
End With
</code></pre></div><p>Файл ftp1.1.txt выглядит так:</p><div class="codebox"><pre><code>Open 10.200.0.182 2121
LOGIN
PASSWORD
PROMPT
cd /inbox
ls
lcd c:/scripts/inbox1
mget *.CRS 
cd /outbox
ls
mput c:/scripts/outbox1/*.CER
disconnect
quit</code></pre></div><p>Прошу помочь.<br />Может как то через БАТник это можно сделать быстрее?</p>]]></content>
			<author>
				<name><![CDATA[batman911]]></name>
			</author>
			<updated>2013-11-26T12:49:00Z</updated>
			<id>http://forum.script-coding.com/viewtopic.php?pid=77565#p77565</id>
		</entry>
</feed>
