- PR -

VB2005でFTPの動作結果が欲しい

1
投稿者投稿内容
りんかーん
会議室デビュー日: 2007/11/10
投稿数: 2
投稿日時: 2007-11-10 14:29
お世話になっております。今、FTPで送信する処理を作ってます。
結果の成否を履歴として保存との命を受けており、且つ送信ファイルも2つ3つあるので、
FtpWebRequestだと複数回実行する事になりそうだし、結果は自作になるのか?と思ったので
バッチファイルに近い形で組もうと思っています。

コードは下記のとおりです。
コード:

Using p As Process = New Process
p.StartInfo.FileName = "ftp"
p.StartInfo.Arguments = "-i -s:ftpput.scr"
p.StartInfo.CreateNoWindow = True
p.StartInfo.UseShellExecute = False
p.StartInfo.RedirectStandardOutput = True
p.Start()
'〜動作結果の解析や保存など〜
Using io As New IO.StreamWriter("c:\ftpput.log")
io.Write(p.StandardOutput.ReadToEnd)
End Using
End Using



けどftpput.logの中身は
User (xx.xx.xx.xx:(none)): OPEN xx.xx.xx.xx


ASCII
mput ftpput1.txt
quit

となってしまい、対話形式ならば得られるような結果が取得できません。
230 User ftpuser logged in.
226 Transfer complete.

どうしたらこのような結果が得られるでしょうか。よろしくお願いします。

尚、バッチファイル起動でリダイレクトするという手法も
無きにしも非ずかと思います。
FTP -i -s:\ftpput.scr > c:\ftpput.log
ただ今回は送信ファイルにyymmddhhnnssを付与、
また動作結果(ログと呼ぶのかな)も保存せよとの命を受けているので
まぁ毎回バッチファイルとスクリプトファイル(?)を作成すればよいかとも
考えております。(その際はp.WaitForExit()が必要かと思いますが。)
しかし他にいい知恵があればよろしくお願いします。



[ メッセージ編集済み 編集者: りんかーん 編集日時 2007-11-10 14:51 ]
れい
ぬし
会議室デビュー日: 2005/11/01
投稿数: 346
投稿日時: 2007-11-12 21:50
引用:

となってしまい、対話形式ならば得られるような結果が取得できません。



ありゃりゃ。
確かに得られません。
FTPがシェル実行を判断してるんでしょうかね。

引用:

しかし他にいい知恵があればよろしくお願いします。



私ならFtpWebRequestを使います。

ftpはPASVに対応してませんし、
別プロセスを動かすのは重いし、
実行後に外部ファイルを使うのは醜いし
同期処理の観点でも問題ですから。
りんかーん
会議室デビュー日: 2007/11/10
投稿数: 2
投稿日時: 2007-11-13 14:23
れいさん

ありがとうございました。

貴重なご意見として参考にさせていただきます。
重ね重ねありがとうございました。
1

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