2011-08-23 2 views
4

私は幾分関係はありますが、異なる質問hereがあります。バッチスクリプトでftpエラーコードをキャプチャする方法は?

私はこのようなバッチスクリプト(*.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 

基本的にこれは、ftpサイトにzipファイルをアップロードするスクリプトです。私の質問は、アップロード操作が失敗することがあります(リモートFTPが利用できない、「myfile.zip」が存在しない、アップロード操作が中断されているなど)、そのような不幸なことが起こったとき、私は自分のバットを欲しいファイルリターン1(exit 1)。

私のアップロードが成功しなかった場合、ftpは例外をスローします(例外はC++の例外のようです)。キャッチオール例外をキャッチしてexit 1としますが、 'これはバッチスクリプトで利用できると思います。

ここで私が必要とするものを行うにはどうすればよいですか?

答えて

0

私が知っているバッチファイルのあなたの唯一のオプションは、あなたのftpクライアントがゼロ以外のエラーコードを返すよう要求する "IF ERRORLEVEL"構文を使うことです。

http://www.robvanderwoude.com/errorlevel.phpはいいリファレンスガイドです。

残念ながら私は標準のWindowsのftpクライアントがゼロ以外のエラーコードを返す場合はしません。したがって、これが必須である場合は独自のコードを作成する必要があります。 This linkは、エラーコードを返さないが、出力をファイルにリダイレクトし、FINDコマンドを使用してエラーコードを返すことで、不安定ではあるが回避策を提供することを示唆している。

1

出力をログファイルにリダイレクトできます。また、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 
) 
関連する問題