Форум программистов, компьютерный форум, киберфорум
Наши страницы

VBScript/JScript/WSH/WMI/HTA

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 16, средняя оценка - 4.81
KaKTuZ49
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
#1

Перенос файлов с FTP и наоборот - VBScript/JScript

27.11.2013, 11:26. Просмотров 2338. Ответов 5
Метки нет (Все метки)

Добрый день!

Необходимо выполнить :
- перенос (не копирование файлов) файлов по маске *.CP c FTP на локальный компьютер.
- перенос (не копирование файлов) файлов по маске *.CM с локального компьютера на FTP.


Есть две папки на FTP - Inbox и Outbox.
- В папке Inbox хранятся файлы для обработки на локальной машине - файлы формата *.CP
- В папку Outbox возвращается обработанный файл формата *.CM
Есть две локальные папки - Inbox1 и Outbox1.
- В папку Inbox1 переносятся файлы *.CP из Inbox с FTP
- В папку Outbox1, после обработки на локальном компьютере, попадают обработанные файлы в формате *.CM

Получается такой процесс одного файла:
1 путь:
FTP - Inbox - 0013.CP
Local - Inbox1 - 0013.CP

Тут происходит обработка и он попадает в Outbox1

2 путь:
Local - Outbox1 - 0013.CM
FTP - Outbox - 0013.CM

Имена файлов неизвестны. Известен лишь формат.

Сначала была идея, чтоб одной командой mget *.CM получить, потом следующей командой удалить.
Но после получения всех файлов, в FTP папку Inbox могут попасть еще парочку файлов, и тогда следующей командой DEL удалятся и еще парочку файлов на обработку.

Необходимо выполнить :
- перенос (не копирование файлов) файлов по маске *.CP c FTP на локальный компьютер.
- перенос (не копирование файлов) файлов по маске *.CM с локального компьютера на FTP.

Был написан сначала код, при котором файлы копировались и выводился лог отчета FTP в файл, дабы по полученным данным вновь совершить вход на ftp и удалить перенесенные файлы. Тут же очищались некоторые строчки в ЛОГ файле.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
On Error Resume Next 
dim obj1
dim stroutput
 
Set objShell = CreateObject("WScript.Shell")
 
strCommand1 = "ftp.exe -s:ftp1.1.txt"
 
Set OBJ1 = objShell.exec(strCommand1)
 
strOutput = Replace(OBJ1.StdOut.ReadAll, VbCrLf & "PROMPT", "")
strOutput = Replace(strOutput,"Пользователь (10.200.0.182:(none)): Open 10.200.0.182 2121" & VbCrLf & "Интерактивный режим Выкл." & VbCrLf, "")
 
With WScript.CreateObject("Scripting.FileSystemObject").CreateTextFile("c:/scripts/ftp.log", True)
    .Write strOutput
    .Close
End With
Файл ftp1.1.txt выглядит так:

Код
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
Прошу помочь.
Может как то через БАТник это можно сделать быстрее?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2013, 11:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Перенос файлов с FTP и наоборот (VBScript/JScript):

Залив файлов на ftp не используя ftp.exe - VBScript/JScript
Здравствуйте, скажите пожалуйста если ли способ залить файлы на ftp без стандартной утилиты Windows?

FTP: получение списка файлов из потока. Как вывести список файлов из директории? - Delphi
доброго времени суток. пытаюсь написать свой FTP-клиент. отправил серверу команду LIST, и в ответ он выдал "ок. успешно" ...

Копирование файлов с FTP-сервера на компьютеры клиентов без замены уже имеющихся файлов - CMD/BAT
Приветствую. Такая задача. имеется фтп сервер. на нем лежит 5 папок, в каждой паке каждый день добавляются файлы. Мне необходимо, чтобы эти...

Создание папок по цифровому названию файлов и перенос этих файлов в созданные папки - CMD/BAT
Доброго времени суток. Необходим БАТ файл. Что имеем: Общую папку с файлами типа (A0010061609.DBF, A0010061609.PRN, A0010061609.SB,...

Поиск новейших версий файлов из одноимённых файлов, находящихся в двух каталогах, и перенос найденных в третий - CMD/BAT
Здравствуйте. Возникла необходимость в создании кода на batch, который делает следующее. Сначала код проверяет главную папку, содержащую...

По заданному списку файлов удалить их или, наоборот, исключить их при удалении - CMD/BAT
нужен батник который по заданному списку в текстовом файле,удалит или оставит только нужные файлы. (папка в папке подпапки).Папка в ней...

5
Dragokas
Эксперт WindowsАвтор FAQ
16102 / 6921 / 834
Регистрация: 25.12.2011
Сообщений: 10,692
Записей в блоге: 16
30.11.2013, 02:49 #2
Алгоритм таков:
В свой сценарий вместо lcd c:/scripts/inbox1
вписываете временный каталог.

После скачивания по маске,
считываете имена всех полученных файлов, последовательно создавая программно
новый файл комманд для FTP через FSO WriteLine на удаление одноименных файлов на серваке.
Запускаем файл команд.
После - перенос всех файлов с временного каталога в c:/scripts/inbox1

Добавлено через 8 минут
2-я часть батником примерно так:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
@echo off
(
echo Open 10.200.0.182 2121
echo LOGIN
echo PASSWORD
echo PROMPT
echo cd /inbox
echo ls
@For %%a in (c:\scripts\temp\*) do @echo DELETE "%%a"
echo disconnect
echo quit
) | FTP
2
KaKTuZ49
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
02.12.2013, 13:01  [ТС] #3
Поменяли формат файлов, но это не играет столь большой разницы.
Логику Батника пониманию. Спасибо за идею. Но, Батник после запуска просит ввод пароля.
(Рисунок 1 - Батник1)

Решил попробовать подкорректировать Батник и удалил скобочки и фразу FTP и после этого запустилась без пароля. Решил посмотреть что пишет, если вызывать через CMD.
(Рисунок 2 - Батник2)

Но не удаляет ни из локального хранилища, ни из FTP.
(Рисунок 3 - Батник3)
0
Миниатюры
Перенос файлов с FTP и наоборот   Перенос файлов с FTP и наоборот  
Изображения
 
Dragokas
Эксперт WindowsАвтор FAQ
16102 / 6921 / 834
Регистрация: 25.12.2011
Сообщений: 10,692
Записей в блоге: 16
02.12.2013, 19:42 #4
Ой, ну там, если в FTP cd - то подразумевается удаление на сервере,
а значит путь должен быть соответствующим (только имя файла).

Подправьте вместо "%%a"
"%%~nxa"

На счет пары авторизации - хз. Всегда работало.
Попробуйте сначала создать внешний файл - это нужно часть | FTP заменить на >> "FTP_Comm.txt"
И добавить:

Bash
1
FTP -s:"FTP_Comm.txt"
0
KaKTuZ49
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
09.12.2013, 12:06  [ТС] #5
Долгими стараниями, методом проб и ошибок пришел к такому bat файлу, который осуществляет перенос и удаление, но есть проблема.
После перового запуска, он мне копирует с FTP на комп и с компа на FTP файлы, но удалить он их не может.
Удаление происходит только после запуска скрипта BAT повторно!
Т.е., после первого запуска в лог файл я получаю:

FTP_COMM.TXT
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
Open 10.200.0.182 2121
ftp_user
Express123
PROMPT
cd /inbox
ls 
lcd c:/scripts/temp
mget *.CRS
cd /outbox
ls
mput c:/scripts/outbox1/*.CR1
disconnect
quit

А после повторного запуска ...

FTP_COMM.TXT
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Open 10.200.0.182 2121
ftp_user
Express123
PROMPT
cd /inbox
ls 
lcd c:/scripts/temp
mget *.CRS 
DELETE "1.crs"
DELETE "2.crs"
DELETE "3.crs"
DELETE "4.crs"
DELETE "5.crs"
cd /outbox
ls
mput c:/scripts/outbox1/*.CR1
disconnect
quit
... удаляются файлы с FTP из папки inbox формата *.CRS.


Я пробовал цикл FOR попереставлять по строчкам, но ничего не вышло!
И еще вопрос:
Можно ли таким же циклом FOR удалить файлы с компа формата *.CR1 ?



FTP.BAT
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
(
echo Open 10.200.0.182 2121
echo ftp_user
echo Express123
echo PROMPT
echo cd /inbox
echo ls 
echo lcd c:/scripts/temp
echo mget *.CRS 
@For %%a in (c:\scripts\temp\*) do @echo DELETE "%%~nxa"
echo cd /outbox
echo ls
echo mput c:/scripts/outbox1/*.CR1
echo disconnect
echo quit
) > "FTP_COMM.txt"
timeout /t 5
FTP.exe -s:"FTP_COMM.txt"
copy c:\scripts\FTP_COMM.txt c:\scripts\Log\FTP_COMM_%time:~0,2%%time:~3,2%-%date:~-10,2%%date:~3,2%%date:~-4,4%.txt
0
KaKTuZ49
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 4
13.12.2013, 14:49  [ТС] #6
Сделал вот так! Получилось и переместить и удалить!
А как сделать удаление файлов формата *.CR1 с локального компьютера, после переноса их по маске на FTP каталог?
(только те, которые перекопировал)
Может так же циклом for?

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
@echo off
(
echo Open 10.200.0.182 2121
echo ftp_user
echo Express123
echo PROMPT
echo cd /inbox
echo ls
echo lcd c:/scripts/temp
echo mget *.CRS 
echo cd /outbox
echo ls
echo mput c:/scripts/outbox1/*.CR1
echo disconnect
echo quit
) > "FTP_COMM.txt"
FTP.exe -s:"FTP_COMM.txt"
 
(
echo Open 10.200.0.182 2121
echo ftp_user
echo Express123
echo PROMPT
echo cd /inbox
echo ls
@For %%a in (c:\scripts\temp\*) do @echo DELETE "%%~nxa"
echo disconnect
echo quit
) > "FTP_COMM_DEL.txt"
FTP.exe -s:"FTP_COMM_DEL.txt"
0
13.12.2013, 14:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.12.2013, 14:49
Привет! Вот еще темы с ответами:

Докачка файлов по FTP - Базы данных
Доброго времени суток, Помогите решить следующую задачу. Имеются 1 ПК (Win XP. FTP сервер FileZilla), и еще 5 ПК (Win XP, соединяются...

Передача файлов по FTP - C++ Builder
Все привет. Код соединения и передачи файла на FTP-сервер IdFTP1->Host = "хост фтп"; IdFTP1->Username = "Логин"; ...

Загрузка файлов с FTP - Bash
Добрый день! есть такой вот скрипт: #!/bin/sh FTPUSER='user' FTPHOST='host' FTPPASS='pass' FTPDIR='/files' ...

Список файлов по ftp - PHP
Доброго времени суток не могу получить список файлов подключение проходит время выходит в результате bool(false) $conn_id...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.