Как захватить код ошибки ftp в пакетных скриптах? - PullRequest
6 голосов
/ 23 августа 2011

У меня есть несколько связанных, но разных вопросов здесь .

У меня есть пакетный скрипт (*.bat файл), такой как:

@ftp -i -s:"%~f0"&GOTO:EOF
open ftp.myhost.com
myuser
mypassword
!:--- FTP commands below here ---
lcd "C:\myfolder"
cd  /testdir
binary
put "myfile.zip"
disconnect
bye

По сути, это скрипт, который загружает ZIP-файл на FTP-сайт.Мой вопрос заключается в том, что операция загрузки может время от времени терпеть неудачу (удаленный ftp недоступен, «myfile.zip» не существует, операция загрузки прервана и все такое), и когда такие неудачные вещи случаются, я хочу, чтобы мой batвозвращение файла 1 (exit 1).

Было бы замечательно, если бы моя загрузка не была успешной, ftp выдал бы исключение (да, как исключение в C ++), и у меня был бы универсальный способисключение, которое ловит его, а затем exit 1, но я не думаю, что это доступно в пакетном скрипте.

Какой лучший способ сделать то, что мне нужно здесь?

Ответы [ 2 ]

2 голосов
/ 07 октября 2013

Вы можете перенаправить вывод в файл журнала, и после завершения сеанса ftp файл может быть проанализирован.

0 голосов
/ 23 августа 2011

Ваша единственная опция в пакетных файлах, о которой я знаю, - это использовать синтаксис "IF ERRORLEVEL", который требует, чтобы ваш ftp-клиент возвращал ненулевой код ошибки.

http://www.robvanderwoude.com/errorlevel.php является хорошим справочным руководством.

К сожалению, нет, если стандартный ftp-клиент Windows возвращает ненулевые коды ошибок, поэтому вам, возможно, придется написать свой код, если это требуется. Эта ссылка предполагает, что она не возвращает код ошибки, но предоставляет обходной путь, хотя и неуклюжий, перенаправляя вывод в файл и используя команду FIND для возврата кода ошибки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...