|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Копирование последнего файла с FTP на локальный компьютер |
|
CMD/BAT - [решено] Копирование последнего файла с FTP на локальный компьютер
|
Новый участник Сообщения: 4 |
Здравствуйте, буду признательна если кто-нибудь поможет написать .bat или посоветует где почитать.
Проблема: на FTP два раза в день падают файлы следующего вида f_1, f_2, f_3..... Нужен bat который будет подключаться к FTP и копировать файл с самым последним номером на локальный компьютер в папку из которой предварительно удаляется предыдущий. В настоящее время созданы следующие файлы: ftp.txt open xx.xx.x.xxx user1 123456 ls -d C:\folder\file.txt $log=C:\folder\file.txt bin recv f_789.rar C:\folder\f_789.rar disconnect quit 1.bat ftp -s:ftp.txt for /f %%i in (%log%) do ( set filename=%%i ) pause Т.е. у меня не получается взять имя последнего файла работая с FTP. Можно ли реализовать в файле ftp.txt цикл аналогичный тому, что реализован сейчас в 1.bat? Можно ли присвоить это значение переменной? Как работать с переменными при подключении к FTP? |
|
Отправлено: 13:02, 03-08-2012 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать Вам нужно с некого ФТП забирать файлы, а почему бы вам не обратить внимание на такую связку : wget curl xcopy
По сути - вы батником забираете с ФТП (только изменённые и новые) файлы, а xcopy регулируете свои потребности внутри локалки. Или "взять" dir с ФТП в файл и на основании этого файла "брать" последнее имя для скачивания или другой обработки. Если кому-то нужны конкретные примеры, обращайтесь - покажу свои, работающие примеры. |
Последний раз редактировалось igvak, 06-08-2012 в 12:38. Причина: Дополнения Отправлено: 12:30, 06-08-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать если использовать xcopy не совсем понятно как будет определятся новый файл или нет, папка в которую я копирую файл должно содержать только последний, актуальный.
Например если там лежал f_1, то сначала удаляется f_1, а потом в эту папку копируется f_2. в файле ftp.txt я использую команду ls -d C:\folder\file.txt, которая на локальный диск в файл записывает все имена файлов с ftp. Далее я могу в 1.bat взять последнее имя файла с помощью цикла for /f %%i in (%log%) do (set filename=%%i) но как это сделать в файле ftp.txt? при попытке использовать там данный цикл выдается ошибка о том, что команда не допустима. В общем я определила имя последнего файла, но как дальше работать с этим именем не понимаю. |
Отправлено: 10:05, 07-08-2012 | #3 |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать lekanka - Вы сделали основное - ...В общем я определила имя последнего файла, но как дальше работать с этим именем не понимаю...
Имея переменную с именем последнего файла - к нему (файлу) можно применять все имеющинся команды. первое - наверное нужно скопировать не имя, а файл с этим именем, себе на локальный ресурс. второе - ой ну тут уже любые команды - от ваших нужд зависит, я бы вторым скопировал файл в архив накоплений, чирконул бы в лог - мол "ходил туды, видел это, а взял это + год/мес/день/час/мин", а уж потом обрабатывал "вытянутый" файл по вашему назначению. |
Отправлено: 14:20, 08-08-2012 | #4 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Проблема в этих самых любых командах. Проблема в том, что имя файла я определяю уже на локальном компьютере, а не на ftp. Как этой переменной теперь воспользоваться на ftp? Фактически когда я определила эту переменную я уже отключилась от ftp. А как определить имя файла не отключаясь от ftp не знаю.
|
|
Отправлено: 11:32, 09-08-2012 | #5 |
Новый участник Сообщения: 4
|
Профиль | Отправить PM | Цитировать Проблема решена
(echo user username pass echo ls -d echo quit)|ftp -n xx.xx.x.xx > C:\folder\file.txt for /f %%i in (C:\folder\file.txt) do ( set filename=%%i ) pause ( echo user username pass echo bin echo hash echo prompt echo get %filename% ) | ftp -n xx.xx.x.xxx |
Отправлено: 13:46, 13-08-2012 | #6 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Двойное расширение файла, удаление последнего. | delure | Скриптовые языки администрирования Windows | 19 | 25-12-2020 22:27 | |
VBS/WSH/JS - Копирование самого последнего файла по дате | djviper | Скриптовые языки администрирования Windows | 1 | 31-05-2012 09:58 | |
CMD/BAT - [решено] Копирование файла с http-узла на локальный компьютер | sea707 | Скриптовые языки администрирования Windows | 5 | 06-06-2011 02:40 | |
Перенаправление входящего запроса на локальный компьютер | septera | Microsoft Windows NT/2000/2003 | 3 | 22-04-2009 08:53 |
|