dポイントプレゼントキャンペーン実施中!

FTPサーバはwindows2003のIISです
FTPクライアントはwindows2000,xpの標準添付のftpコマンドです

バッチファイル中でFTP -S:C:\FTPCMD.TXT
みたいな感じで起動していますが
FTP正常・異常にかかわらず常にERRORLEVELは0が
返ってきます
なんとかバッチファイル中で正常通信できたか
できないか判断したいのです
その判断方法をアドバイス下さい

※その他の手段として
 バッチファイルでコマンド起動できるFTPクライアントソフト
 (できればフリー)を使えばERRORLEVELが返ってくるよという
 ものがありましたら紹介頂けると嬉しいです

もしくは
ProFTPDが転送中のファイルを".in.{ファイル名}"として、転送完了すると"{ファイル名}"に変更する機能がある
そうですがこれと同じような機能はIISのFTPにはないのでしょうか?
設定を探してみましたが見つかりませんでした
(FTPサーバーはIIS以外に変更できません)

A 回答 (2件)

ftpコマンドの終了コード(ERRORLEVE)は、ftpコマンド自体の正常終了・異常終了を表します。

例えば、ftp -s:存在しないファイル だと、ERRORLEVEL が非0になります。

getやputといったサブコマンドの正常・終了は、補足に書かれている通り、メッセージを見るしかないです。

>findコマンドの判定をバッチファイル中で行う方法さえ

ERRORLEVEL をご存じなのに何故??

ftp -s:xxxx > xxxx.log
FIND /i "226 Transfer complete" c:\xxxx.log >NUL
exit /b %ERRORLEVEL%
もしくは、
ftp -s:xxxx > xxxx.log
FIND /i "226 Transfer complete" c:\xxxx.log >NUL
if ERRORLEVEL 1 exit /b 1
exit /b 0

注意としては、get/put だけでなく lsやdirでもtransfer completeが出ますので、それらを使うと必ずfindが成功します。
    • good
    • 0
この回答へのお礼

ありがとうございます

お礼日時:2010/03/18 09:53

FTPコマンドにそれらの機能が、あるはずもありません。

もともと、自動化を狙ったこまんどでないため、軽快に簡単に使う事を目的としています。

自動化には、WSHやPowerShellなるものを用意していますね。UNIX系ならシェルスクリプトで達成できますが、Windowdsではこの2つです。

代替のやり方として、FTPから出力されるメッセージを拾うやり方がありますね。エラーメッセージだったら、ファイル名を変更する、などと操作すればいいだけです。

例として下記のような仕組みを利用する方法があります。

http://msdn.microsoft.com/ja-jp/library/cc364510 …

又、WMIなどをWSHから使う方法もあります。このWMIはエクセルなどからも使えるので、面白かもしれません。

ようは、標準出力に出力される場合の処理と、エラー出力に出力される場合、両方の場合、調査して、それぞれループさせれば、希望の仕組みはスクリプトレベルでカスタム可能です。

これはらは、ASPなどからも使用可能ですので、IISから公開するWebページとの組み合わせも可能です。業務用のWebアプリはこれらを駆使してなりたっています。

なお、.NETを使えば簡単にできます。

この回答への補足

ふと思ったのですが
FTP -S:C:\FTPCMD.TXT > C:\XXXX.LOG
みたいにリダイレクトして
このファイルをバッチファイル中で
FIND /i "226 Transfer complete" c:\xxxx.log
でを活用して判断できないでしょうか?

わからないのがfindコマンドを手動で実行する分には
人間が目視すれば結果がわかりますが
これをバッチファイル中で
findコマンドを実行し結果により指定
キーワードが見つからない場合は
exit /b 1 で終了し(終了コード1を返す)
キーワードが見つかった場合は
exit /b 0 で終了する(正常終了)
みたいな判断をfindコマンドを使う事によりできないでしょうか?
findコマンドの判定をバッチファイル中で行う方法さえ
わかれば・・・

補足日時:2010/03/16 20:50
    • good
    • 0
この回答へのお礼

こんにちは
FTPコマンドにはありませんでしたか・・・

WMIをWSHから使ったことが無いので
具体的にどのようにプログラミングしていいか
わかりませんでした
FTPコマンドのメッセージを拾うサンプル等
どこかのホームページで見られないでしょうか?

.NETを使う場合というのは
.NETでFTPクライアントと同等の機能を持った汎用的な
プログラムを作る(失敗時にはちゃんとしたエラーコードを返す)
という事でしょうか?
VISUALBASIC.NETは使った事はありますが
まだ同等機能を自作するまではできません・・・
こちらもどこかのホームページで何かサンプル等があるなら
参考にしたいのですがご存知ないでしょうか?

お礼日時:2010/03/16 20:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!