はじめまして。
InetコントロールでFTPサーバ上のフォルダを削除するために、
まずはそのフォルダ内のファイルを全て削除したいのですが、
DOSプロンプトから自分で実行する場合だと、"prompt"を実行してから
"mdelete *"を実行すればいちいち確認されずに済みますよね。
ところが、VBで同じことをしようとした場合、
以下のソースの"prompt"までいった後、画面に制御が戻ってきてしまって
"mdelete"の行以下を実行してくれないのですが、
どこに原因があるのでしょうか?
それとも"prompt"は使えないのでしょうか?
よろしくお願い致します。
Private Sub Command1_Click()
Inet1.URL = "ftp://xxxxx"
Inet1.UserName = "xxxxx"
Inet1.Password = "xxxxx"
Inet1.RequestTimeout = 60
Inet1.Protocol = icFTP
Inet1.Execute , "cd data"
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Execute , "prompt"
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Execute , "mdelete *"
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Execute , "close"
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Execute , "quit"
Do While Inet1.StillExecuting
DoEvents
Loop
Inet1.Cancel
End Sub
そもそも、prompt や mdelete
がFTPで定義されていないと思いますよ。
Microsoftのftp.exeをコマンドプロンプトから
使う方法と、
実際にFTPを実装する方法は違います。
RFC日本語訳
'http://hp.vector.co.jp/authors/VA002682/rfc959j.htm
>"mdelete"の行以下を実行してくれないのですが、
>どこに原因があるのでしょうか?
FTPサーバがコマンドを認識してないからではないでしょうか。
1.telnetでアクセスしてみる。
2.Inetのデータ受信をしてデバッグしてみる
などはやっておいてもいいかとおもいます。
FTPのやりとり
'http://www.atmarkit.co.jp/fnetwork/rensai/tcp05/01.html
因みに、以前私が作成した複数テルネット
からftpするツールではwinsockコントロールを
使っていますがコマンドをそのまま投げていますので
使えると思います。過去ログ検索してみてハイかが?
レスありがとうございます。
>そもそも、prompt や mdelete
>がFTPで定義されていないと思いますよ。
inetコントロールで複数ファイル削除を実現したい場合には
GetChunkメソッドを使ってファイル名を取得し、
1つずつ削除するしかないということなのでしょうか?
よろしくお願い致します。
ワイルドカードでファイル名を*.*と指定すればいいのではないでしょうか。
FTPのリファランスを
ワイルドカードで調べてみてください。
複数ファイルを指定する場合にはmput,mget,mdeleteを使う必要があり、
put,get,deleteでのワイルドカード指定はできないようです。
ですので、やはりGetChunkメソッドを使って存在チェックをすることにしました。
いろいろありがとうございました。
ツイート | ![]() |