如何在批处理脚本中捕获ftp错误代码?

Gra*_*ton 6 ftp batch-file

我有一个有点关系,但不同的问题在这里.

我有一个批处理脚本(*.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
Run Code Online (Sandbox Code Playgroud)

基本上这是一个将zip文件上传到ftp站点的脚本.我的问题是,上传操作可能会不时失败(远程ftp不可用,"myfile.zip"不存在,上传操作中断等等),当这种不幸的事情发生时,我想要我的蝙蝠文件返回1(exit 1).

如果我的上传不成功会很好,ftp会抛出一个异常(是的,就像C++中的异常一样),而且我会有一个抓住它的所有异常exit 1,但是我不认为这是可用的在批处理脚本中.

在这里做我需要的最好的方法是什么?

jeb*_*jeb 3

您可以将输出重定向到日志文件,当 ftp 会话完成时,可以解析该文件。

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

:parse
for /F "delims=" %%L in (log.txt) Do (
  ... parse each line
)
Run Code Online (Sandbox Code Playgroud)