- PR -

コマンドからftp転送してのエラーについて

1
投稿者投稿内容
トムソン
常連さん
会議室デビュー日: 2005/07/01
投稿数: 22
投稿日時: 2006-08-08 21:55
いつも拝見させていただいております。
vb.net初心者です。
現在、FTPを使用して、転送のためバッチを作成して、VB.NETからshell関数を
使用して転送処理を行っているのですが、バッチで転送を行う際にエラーが発生した
時のエラーをvb.netに返す方法などあるのでしょうか?
調べたのですが、リダイレクトでできるなど書いてあったのですが、いまいち使い方
がわかりません。
何かよい方法をご存知でしたらお願いいたします。
FTPのバッチでは、openやcd、putなどを記述しています。
ログインに失敗した、putで失敗した(複数行存在する)などエラーが発生
したときに、VB.NETにエラーを返して、エラー処理を行いたいと考えています。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2006-08-08 22:16
バッチなら戻り値で返せばいいんじゃね?
トムソン
常連さん
会議室デビュー日: 2005/07/01
投稿数: 22
投稿日時: 2006-08-08 23:04
ぶさいくろうさん

戻り値の返し方、受け方などがまったくわかりません。
ご存知でしたら、お願いします。
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2006-08-08 23:39
Shellでftp・・・・ということは、要するに
%SystemRoot%\System32\ftp.exeを使用するってことですよね。
それも、恐らく -s:filename オプションで。

私が以前に試した限り、vb.netにエラーを戻すとか戻さない以前に
-s:filenameオプションで実行すると、途中で失敗しようが失敗しまいが、
常にftp.exeの戻す値は一定でした(確かゼロで固定)。

すなわち、成功することを前提とするような場合にのみ、
(コケても笑って済ますことができる自分のためのツール程度)
使用できると思います。

途中で部分的にコケたときはどうするとか、詳細なエラーの
ハンドリング、分岐処理をするなら、FTP相当のSocket通信を
自前で(まぁ、フリーコンポーネントや、市販コンポーネントを使う手もありますが)
組むしかないです。

-s:filenameのつもりで書いているのではなければ、外してすまん。
トムソン
常連さん
会議室デビュー日: 2005/07/01
投稿数: 22
投稿日時: 2006-08-09 00:06
Shellでftp・・・・ということは、要するに
%SystemRoot%\System32\ftp.exeを使用するってことですよね。
それも、恐らく -s:filename オプションで。

ftp.exeではなく、バッチファイルに”ftp -s:ファイル名.CMD”
でファイル名.cmdにopen、cd、putなどでコマンドを記述しています。
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2006-08-09 12:40
引用:

Shellでftp・・・・ということは、要するに
%SystemRoot%\System32\ftp.exeを使用するってことですよね。
それも、恐らく -s:filename オプションで。

ftp.exeではなく、バッチファイルに”ftp -s:ファイル名.CMD”
でファイル名.cmdにopen、cd、putなどでコマンドを記述しています。



私が前回確認したときは、バッチでは起動していませんが、
バッチだったら大丈夫だった という発言意図???

私は当事者ではないので、自分で確認する気力がありませんが。

バッチだったらちゃんとそれなりのエラーコードが返ってきます???

多分、返ってこないと思いますが。
====================================================
加筆 ちなみに私はVBScriptからRunして戻り値を調べた
    経験に基づいて記述しています。

[ メッセージ編集済み 編集者: platini 編集日時 2006-08-09 12:41 ]

[ メッセージ編集済み 編集者: platini 編集日時 2006-08-09 22:31 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-08-11 22:31
引用:

platiniさんの書き込み (2006-08-09 12:40) より:

私が前回確認したときは、バッチでは起動していませんが、
バッチだったら大丈夫だった という発言意図???


おそらく、コマンドラインに打ち込む ftp が、%SystemRoot%\System32\ftp.exe だということを知らないと思われ。。。

イヤ、多いんですよ。環境変数 PATH を知らない人たちが。。。
カルガモ
常連さん
会議室デビュー日: 2006/06/27
投稿数: 20
投稿日時: 2006-08-16 17:45
こんにちは。
引用:

Shellでftp・・・・ということは、要するに
%SystemRoot%System32ftp.exeを使用するってことですよね。
それも、恐らく -s:filename オプションで。
ftp.exeではなく、バッチファイルに”ftp -s:ファイル名.CMD”
でファイル名.cmdにopen、cd、putなどでコマンドを記述しています。


Jittaさんの言う通りで、コマンドラインで記述するftpとは、%SystemRoot%\System32\ftp.exeです。
あと、実行結果ですが、これは戻ってきます。
verboseを設定することで実行結果がコードで返ってきます。
これを処理することで、自分と意図している処理が行えるかと思います。
(判定処理とかは自分で組むしかないかと、、)
「RFC文書」のキーワードで検索するとそれらしいものが引っかかるかと思います。
1

スキルアップ/キャリアアップ(JOB@IT)