![]() |
Копирование последнего файла с FTP на локальный компьютер
Здравствуйте, буду признательна если кто-нибудь поможет написать .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? |
Вам нужно с некого ФТП забирать файлы, а почему бы вам не обратить внимание на такую связку : wget curl xcopy
По сути - вы батником забираете с ФТП (только изменённые и новые) файлы, а xcopy регулируете свои потребности внутри локалки. Или "взять" dir с ФТП в файл и на основании этого файла "брать" последнее имя для скачивания или другой обработки. Если кому-то нужны конкретные примеры, обращайтесь - покажу свои, работающие примеры. |
если использовать 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? при попытке использовать там данный цикл выдается ошибка о том, что команда не допустима. В общем я определила имя последнего файла, но как дальше работать с этим именем не понимаю. |
lekanka - Вы сделали основное - ...В общем я определила имя последнего файла, но как дальше работать с этим именем не понимаю...
Имея переменную с именем последнего файла - к нему (файлу) можно применять все имеющинся команды. первое - наверное нужно скопировать не имя, а файл с этим именем, себе на локальный ресурс. второе - ой ну тут уже любые команды - от ваших нужд зависит, я бы вторым скопировал файл в архив накоплений, чирконул бы в лог - мол "ходил туды, видел это, а взял это + год/мес/день/час/мин", а уж потом обрабатывал "вытянутый" файл по вашему назначению. |
Проблема в этих самых любых командах. Проблема в том, что имя файла я определяю уже на локальном компьютере, а не на ftp. Как этой переменной теперь воспользоваться на ftp? Фактически когда я определила эту переменную я уже отключилась от ftp. А как определить имя файла не отключаясь от ftp не знаю.
|
Проблема решена
(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:48. |
Время: 13:48.
© OSzone.net 2001-