Фотография
Оценка:   - - - - -

cmd файл копирования с FTP сервера


Сообщений в теме: 13

#1 SaNai

SaNai

    Forza Milan

  • Пропользователь
  • 1 137 сообщений

Отправлено 22 января 2010 - 11:52

В общем есть 2 файлика: make_copy.cmd и make_copy.ftp

make_copy.cmd :
@echo off
   echo Копирование на персоналку 
   cd f:\какаято папка на персоналке
   ftp -s:f:\какаято папка на персоналке\make_copy.ftp > f:\какаято папка на персоналке\copy.log
   time
собственно говоря тут запускаем нужный нам сценарий ftp-файла и пишем о всем что происходит в лог-файл


make_copy.ftp, А вооот тут самое интересное:
open какойто IP - конектимся к серваку
   login
   password
   
   cd нужная папка на серваке 
   lcd нужная папка на персоналке
   ascii либо bin - метод копирования
   mget *.pas  - допустим скидываем все файлы с расширением *.pas
   close - закрыли соединение
   bye - ушли из ftp

ВНИМАНИЕ ВОПРОС: мне не нужны все файлы, мне каждый день нужен 1н файл, у которого название начинается pay_yyyymmdd(текущая дата)_al.dbf, например pay_20100122_al.dbf.
вот при запуске make_copy.cmd нужно задать вопрос: "за какое число?", и юзер должен ввести: "22/01/2010", а только после этого уже должен скинутся файл pay_20100122_al.dbf. КАК ЭТО СДЕЛАТЬ? Если конечно это возможно.

просьба тупых вопросов в стиле:"а зачем тебе?" и тупых советов в стиле: "а что трудно каждый раз прописывать?" не писать, если прошу, значит надо...

#2 собеседник

собеседник

    Чуткий форумчанин

  • Пропользователь
  • 1 470 сообщений

Отправлено 22 января 2010 - 12:11

PHP скриптом. Пользователь заходит на сервер, открывая страницу в браузере. На этой странице вводит дату и скачивает нужный файл. У меня так сделано. Даже получаемый файл сжимается для экономии траффика.
Мой блог: Покупки через интернет (за бугром).

#3 Лега

Лега

    Почетный участник

  • Пропользователь
  • 1 278 сообщений

Отправлено 22 января 2010 - 12:14

Навскидку,


set /p dated="Введите дату в формате ггггммдд"
echo Копирование на персоналку
cd f:\какаято папка на персоналке
rm /y c:\make_copy.ftp
echo " open какойто IP" >>c:\make_copy.ftp
echo " login" >>c:\make_copy.ftp
echo " password" >>c:\make_copy.ftp

echo " cd нужная папка на серваке" >>c:\make_copy.ftp
echo " lcd нужная папка на персоналке" >>c:\make_copy.ftp
echo " ascii" >>c:\make_copy.ftp
echo " mget pay_%dated%_al.dbf" >>c:\make_copy.ftp
echo " close" >>c:\make_copy.ftp
echo " bye" >>c:\make_copy.ftp
ftp -s:c:\make_copy.ftp > f:\какаято папка на персоналке\copy.log
time


icq # 168812289jabber: korotky@gmail.com

#4 SaNai

SaNai

    Forza Milan

    Автор темы
  • Пропользователь
  • 1 137 сообщений

Отправлено 22 января 2010 - 12:15

PHP скриптом. Пользователь заходит на сервер, открывая страницу в браузере. На этой странице вводит дату и скачивает нужный файл. У меня так сделано. Даже получаемый файл сжимается для экономии траффика.


примерно код можешь накидать? пхп ваще забыл

#5 собеседник

собеседник

    Чуткий форумчанин

  • Пропользователь
  • 1 470 сообщений

Отправлено 22 января 2010 - 12:33

Мне программист делал. Я в принципе понимаю php, но надо разбираться. Тем более у меня немного не то, просто принцип такой же. Кстати, сервер поддерживает PHP?
Мой блог: Покупки через интернет (за бугром).

#6 SaNai

SaNai

    Forza Milan

    Автор темы
  • Пропользователь
  • 1 137 сообщений

Отправлено 22 января 2010 - 12:48

Вот общими усилиями Леги и меня придумали (конечно не красиво, но практично, осталось оптимизировать)

В общем нужно 2 командных файла
1й создает файл сценария *.ftp, причом затираю прошлую версию файла
2й непосредственно копирует

первый командный файл
@echo off
 
 set /p dated="DATE YYYY MM DD  " записываем дату в переменную
 cd	F:\папка на персоналке\
 del   F:\папка на персоналке\make_copy.ftp - удаляем старую копию
 rm /y F:\папка на персоналке\make_copy.ftp   - собствено создаем новую
 
 (* собственно записываем строки в файл *)
 
 echo open IP					>>F:\папка на персоналке\make_copy.ftp
 echo system					>>F:\папка на персоналке\make_copy.ftp
 echo aims						>>F:\папка на персоналке\make_copy.ftp
 echo cd папка на серваке  >>F:\папка на персоналке\make_copy.ftp
 echo lcd папка куда копировать	   >>F:\папка на персоналке\make_copy.ftp
 echo bin					   >>F:\папка на персоналке\make_copy.ftp
 echo mget pay_otchet_%dated%_al.dbf >>F:\папка на персоналке\make_copy.ftp
 echo y	 (* подтверждаем *)   >>F:\WORK\FTP\make_copy.ftp 
 echo mget pay_otchet_%dated%_04.dbf >>F:\папка на персоналке\make_copy.ftp
 echo y						 >>F:\папка на персоналке\make_copy.ftp 
 echo close					 >>F:\папка на персоналке\make_copy.ftp
 echo bye					   >>F:\папка на персоналке\make_copy.ftp
 
 (* все *)

ну второй я уже писал
@echo off
	echo Копирование на персоналку 
	cd f:\какаято папка на персоналке
	ftp -s:f:\какаято папка на персоналке\make_copy.ftp > f:\какаято папка на персоналке\copy.log

плохо то что интерфейса совсем нет + через пару месяцев в корзине будет куча файлов make_copy.ftp

Мне программист делал. Я в принципе понимаю php, но надо разбираться. Тем более у меня немного не то, просто принцип такой же. Кстати, сервер поддерживает PHP?


неа, у меня OpenVMS

Сообщение отредактировал SaNai: 22 января 2010 - 12:51


#7 собеседник

собеседник

    Чуткий форумчанин

  • Пропользователь
  • 1 470 сообщений

Отправлено 22 января 2010 - 13:34

плохо то что интерфейса совсем нет + через пару месяцев в корзине будет куча файлов make_copy.ftp

У меня в админпанели есть настройка: удаление, без сохранения в корзине. Посмотри, может у тебя тоже есть. А вообще я бы посмотрел на возможность создания нового файла, одноименного старому, с удалением старого при создании нового. Тогда вообще ничего удалять не надо из корзины. И пользователю не понадобится вводить какие-то данные. Просто скачать и всё. Будет скачан последний файл.
Мой блог: Покупки через интернет (за бугром).

#8 SaNai

SaNai

    Forza Milan

    Автор темы
  • Пропользователь
  • 1 137 сообщений

Отправлено 22 января 2010 - 14:35

У меня в админпанели есть настройка: удаление, без сохранения в корзине. Посмотри, может у тебя тоже есть. А вообще я бы посмотрел на возможность создания нового файла, одноименного старому, с удалением старого при создании нового. Тогда вообще ничего удалять не надо из корзины. И пользователю не понадобится вводить какие-то данные. Просто скачать и всё. Будет скачан последний файл.

ты немного недопонял
если не удалять файл он кагбэ добавляет строки в конец файла, что неприемлемо, если кто знает как сделать, то рад буду услышать, а пользователю хоть как придется вводить новые данные, может ему надо скачать дату, которая была год назад,... так что вот в таком легком способе нашол рациональное решение,

Если у кого есть еще идеи, пишите, .... может кому пригодитсо, да и мне пригодитсо, так что товарищи айтишники, жддемс ваших идей

#9 wizza

wizza

    Чуткий форумчанин

  • Тролли
  • 1 572 сообщений

Отправлено 22 января 2010 - 18:20

Давно пора открыть для себя AutoIt

AutoIt — свободно распространяемый язык для автоматизации выполнения задач в Microsoft Windows. В ранних версиях программа преимущественно использовалась для создания скриптов автоматизации (иногда называемых макросами) для программ Microsoft Windows. Такие скрипты полезны для выполнения часто повторяющихся задач, таких как инсталляция идентичных наборов программ на большое количество компьютеров. В более поздних версиях AutoIt улучшился дизайн языка и возросла общая функциональность, что приблизило AutoIt к языкам общего назначения.

С выходом AutoIt 3 синтаксис языка был реструктурирован и приблизился к семейству BASIC. Скрипт может быть скомпилирован в независимый от установленного в системе интерпретатора исполняемый файл.

Новые возможности языка включают:
Компиляция скрипта в EXE файл.
Включение файлов в скомпилированный файл, которые можно извлекать при запуске.
Создание графических интерфейсов GUI, информационных сообщений, форм ввода информации.
Перехват и эмуляция клавиатурных нажатий и кликов мышки.
Запуск консольных приложений и доступ к стандартным потокам ввода/вывода.
Работа с реестром Windows, буфером обмена, файлами (чтение, изменение, копирование, удаление).
Работа с протоколами TCP и UDP.
Автоматизация работы в браузерах: Internet Explorer, Opera, FireFox.
Интернет: чтение HTML кода страниц и скачивание файлов, работа с FTP, отправка E-mail сообщений, работа с базами данных MySQL и SQLite.
Работа с объектами COM (component object modelling).
Вызов функций из 32-битных динамических библиотек.
Работа со звуком.
Выполнение сложных математических расчётов.
Поддержка юникода, начиная с версии 3.2.4.0.
Версия для 64-битных систем.

Оф. сайт - http://www.autoitscript.com/autoit3/
Тут по-русски - http://www.oszone.ru...lay.php?id=3663


В нём вышеописанное делается легко и быстро.
Ежели что - спрашивай.

—Сорок два! — взвизгнул Лунккуоол. -И это всё, что ты можешь сказать после семи с половиной миллионов лет работы?


#10 pepsi

pepsi

    да наверна

  • Тролли
  • 4 750 сообщений

Отправлено 23 января 2010 - 17:07

wizza
openVMS же у него

Сообщение отредактировал pepsi: 23 января 2010 - 17:07

Кто не осваивает науки - тот осваивает Сибирь

#11 wizza

wizza

    Чуткий форумчанин

  • Тролли
  • 1 572 сообщений

Отправлено 23 января 2010 - 17:52

wizza
openVMS же у него

И что? Какая разница на чём сервер?
cmd-файлы - то на Win исполняются ;)

—Сорок два! — взвизгнул Лунккуоол. -И это всё, что ты можешь сказать после семи с половиной миллионов лет работы?


#12 wizza

wizza

    Чуткий форумчанин

  • Тролли
  • 1 572 сообщений

Отправлено 29 января 2010 - 01:45

ТС отпишись, помогло?

—Сорок два! — взвизгнул Лунккуоол. -И это всё, что ты можешь сказать после семи с половиной миллионов лет работы?


#13 Leroy

Leroy

    Участник форума

  • Пропользователь
  • PipPipPipPip
  • 203 сообщений

Отправлено 26 апреля 2011 - 14:42

У меня похожая проблема. В общем надо каждый день копировать папку с фтп в которой около 150 файлов. Нужно сделать так чтобы было "вводим имя папки" и она копируется.
Сейчас у меня 2 файла er.cmd :
@echo off
C:
cd UPDATE
ftp -s:C:\cc\upd.script -i >C:\cc\ftp.log


и upd.script:
open адрес фтп
логин
пароль
cd папка1
cd папка2
cd папка3
cd папка4
cd папка которую надо скопировать
get файл1
get файл2
get файл3 и тд до 150 файла
quit


#14 wizza

wizza

    Чуткий форумчанин

  • Тролли
  • 1 572 сообщений

Отправлено 27 апреля 2011 - 01:33

У меня похожая проблема. В общем надо каждый день копировать папку с фтп в которой около 150 файлов.

Скомпили скрипт на AutoIt. Это не сложнее чем написать cmd

—Сорок два! — взвизгнул Лунккуоол. -И это всё, что ты можешь сказать после семи с половиной миллионов лет работы?




Ответить