2014-09-02 2 views
1

Привет я пытаюсь написать пакетный файл MS-DOS, который записывает в сервер FTP, и загружает файлпартии FTP вися получить

FTP-размещенного в IIS, но это не непосредственно под моим контролем (третий вечеринка).

мой сценарий выглядит следующим образом (имя файла ftpcmd.dat)

user bob 
mypassword 
get /foldrname/export.txt c:\export.txt 
quit 

и затем запускается на выполнение, как этот

ftp -n -s:ftpcmd.dat ftp.myserver.co.za 

Проблема заключается в том, что он всегда застревает в командной прибудете, FTP отвечает так:

501 Server cannot accept argument. 
150 Opening ASCII mode data connection. 

Я попытался сделать это вручную в командной строке, точно такой же результат.

я могу это сделать с помощью такого инструмента, как FileZilla, одна вещь, которую я заметил, что он переходит в пассивном режиме, поэтому для эмуляции этого я попробовал, добавив это после входа в

quote pasv 

Это переключается в пассивный режим, но та же проблема сохраняется.

примечание. Я не могу заставить поставщика услуг внести какие-либо изменения в конфигурацию. Также обратите внимание - он отлично работает с использованием клиента filezilla

Спасибо!

+0

вы пытались получить файл с некоторыми другими инструментами? например, wget: 'wget ftp: // user: password @ ftp.myserver.co.za/foldrname/export.txt' альтернативно вы можете получить wirehark и понюхать точные команды, которые отправляет filezilla. то просто поместите их в ftpcmd.Дат также примечание: последний раз, когда я использовал сценарий передачи файлов он пошел STH так: 'открытый ftp.server.com пользователя пароля ... разъединения bye' – rostok

+0

выход wiresharks немного за меня. я могу посмотреть на wget, но тогда моя следующая функция будет состоять в том, чтобы удалить файл, а затем поставить, который, как я думаю, выходит из сферы действия wget? – Crudler

+1

Как сменить папку перед командой 'get'? например: 'cd foldername', а затем' get export.txt' – rostok

ответ

0

Я думаю, что это в основном часть того, что @rostok говорит, но, как правило, я хотел бы использовать

user bob mypassword 
get /foldrname/export.txt c:\export.txt 
quit 

Вы также можете просто вызвать его с

open ftp.myserver.co.za 
user bob mypassword 
get /foldrname/export.txt c:\export.txt 
quit 

Убедитесь, что foldrname действительно выключить корень. Что произойдет, если вы

cd foldrname 

Означает ли это? Работает ли cd \foldrname или имеет значение? Можете ли вы успешно использовать lcd c:\export.txt? Возможно, это просто проблема.

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

0

Попробуйте этот скрипт:

open ftp.myserver.co.za 
bob 
mypassword 
binary 
lcd "c:\" 
get /foldrname/export.txt 
quit 

Execute это следующим образом:

ftp -i -s:ftpcmd.dat 

Обратите внимание, что вам нужны права на запись в C: \

Смежные вопросы