我在Win2003中運行批處理文件以通過FTP傳輸文件。有時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
該用戶帳戶是一個管理員帳戶,所以它不是一個權利問題。有任何想法嗎?
UPDATE:
該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的errorlevel沒有被觸發,但爲什麼FTP服務器的響應沒有被捕獲?我沒有使用-v開關或切換冗長。
'-d'如何啓用調試?您可能需要以其他方式解析'ftp.log'來確定它是否成功。 – tomlogic 2012-04-10 20:41:00
-d不會生成服務器響應。這就像調度程序爲殼體創建了一個替代現實,它無法抓住所有東西。 – Tony 2012-04-16 16:01:42