FTP経由でファイルを転送するためにWin2003でバッチファイルを実行しています。
バッチ ファイルは、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 スイッチを使用していないか、詳細を切り替えていません。