【发布时间】:2012-03-30 17:12:48
【问题描述】:
我在 Win2003 中运行一个批处理文件通过 FTP 传输文件。
批处理文件将 FTP 会话结果通过管道传输到 FIND 以查看是否有 226 成功消息,这很好用。不幸的是,即使文件传输成功并且返回了 226 消息,我也遇到了错误级别的情况。
FTP -s:go.ftp 2>NUL | Find "226 Transfer OK" > NUL
If ErrorLevel 1 Echo ERROR - FTP transfer failed. >> err.log
用户帐户是管理员帐户,因此不是权限问题。有什么想法吗?
更新:
没有通过重定向捕获 226 消息,因此 FIND 失败。在我的测试中,当从调度程序运行时,我将 FTP 输出重定向到一个单独的文件。尽管 FTP 命令运行成功,但没有出现任何服务器响应。
这是我的 FTP 脚本:
open ftpsite
username
password
dir
quit
这是输出 (FTP -s:go.ftp >ftp.log 2>ftp.err)。
User (ftpsite:(none)): open ftpsite
04-01-12 02:35PM <DIR> DIR1
04-01-12 02:35PM <DIR> DIR2
04-01-12 02:35PM <DIR> DIR3
04-01-12 02:35PM <DIR> DIR4
dir
quit
此外,错误流 ( 2>ftp.err ) 中不会出现任何内容。至少我现在知道为什么我的 FIND 的错误级别没有被触发,但是为什么 FTP 服务器的响应没有被捕获?我没有使用 -v 开关或切换详细信息。
【问题讨论】:
-
-d启用调试怎么样?您可能需要以其他方式解析ftp.log以确定它是否成功。 -
-d 不会产生服务器响应。这就像调度程序为 shell 创建了一个替代现实,它无法获取所有内容。
标签: batch-file ftp piping errorlevel