我在 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 开关或切换详细。