• 締切済み

FTPでリモートサーバーのディレクトリーの存在確認をしたい。

FTPでの転送プログラムを組んでいるところですが、FTPサーバーに既に存在するディレクトリー名と同じディレクトリー名で作成しようとすると、エラーになります。 それで、同じディレクトリーが存在するかどうかのチェックを行いたいのですが、下記のやり方では旨くチェックしてくれません。 既に存在するディレクトリーを存在しないと嘘を教えます。 以上宜しくお願い致します。 If IO.Directory.Exists(uri) = False Then MsgBox(uri & "が存在しません。") End if

みんなの回答

回答No.1

WebRequestMethods.Ftp.ListDirectory とか。

robotanmarch
質問者

お礼

ご回答有り難う御座います。 下記のごとく記述しましたが、駄目でした。 If WebRequestMethods.Ftp.ListDirectory = False Then MsgBox(uri & "が存在しません。")     End if 宜しくお願い致します。

robotanmarch
質問者

補足

早速のご回答有り難う御座います。 色々ネットで調べると WebRequestMethods.Ftp.ListDirectory が記述されてますが、使用方が解らないのです。 どこでディレクトリー名を入れるのやら等記述方法が イマイチ分かりません。 もし、ご存じならご教授下さい。 宜しくお願い致します。

関連するQ&A

  • VB2008でFTPでのディレクトリー存在確認のやり方が分からない。

    VB2008でFTP転送のブログラムを組んでいるのですが、ディレクトリーの存在確認のところで詰まっています。 ネット検索を行うと、下記記述が幾つか出てきますが、使い方、記述方法が分かりません。 if文を使い、FALSE か TRUEかで確認を行いたいと思っております。 ご存じの方がいらっしゃいましたらご教授下さいませ。 当方は初心者です。 宜しく御願い致します。 WebRequestMethods.Ftp.ListDirectory WebRequestMethods.Ftp.ListDirectoryDetails

  • 条件に合うフォルダが存在するかを調べたい

    条件に合うフォルダが存在するかを調べたい c:\a\ フォルダ内に、以下例のようなフォルダが存在するとします。 c:\a\ (以下c:\a\内フォルダ名) f0001_r120 f0003_c511 f0004_t141 f0006_q546 f0009_k551 f0011_g151 ・ ・ ・ このaフォルダ内に、例えば「f0004」で始まるフォルダ名のフォルダがあるかどうかを調べたいのです。 以下のようなプログラムを組んだのですが、うまく動作しません。 なお、この例でいう「f0004_t141」の「_t141」のフォルダ名部分は他プログラムでランダムに作成される文字列であり、検索する側で知りえる情報ではなく、私的にはワイルドカード「*」ようなもので処理することしか思いつきません。。(;;) If System.IO.Directory.Exists("c:\a\f0004*") Then MsgBox("ある") Else MsgBox("ない") End If おそらく、System.IO.Directory.Exists自体に「*」が使用できないと思うのですが、何か他によい方法があればどうかご教授ください。 どうぞよろしくお願いします。

  • VBAでFTPサーバーへのアップデート

    BASP21でのFTPサーバーへのアップデートが出来ないです。 BASP21をインストールし、サーバーのユーザー名やパスワードも あっている状態です。 しかし、アップデートすると 「を送信できませんでした。」 と表示され、アップデートできませんでした。 「FTP接続できませんでした。」は抜けているので、 それ以外が原因だとは思うのですが分かりません。 Visual Basicのサンプルから書きました。 以下の通りです。 初心者のため質問に不備があるかもしれません。 予めお許しください。 Sub FTPサーバーにUP() Dim FTP, rc As Long, Server As String, User As String, Pass As String Dim Target As String, Folder As String Set FTP = CreateObject("basp21.FTP") ''FTPオブジェクト Server = "ftp.●●●●●●.jp" ''ホストアドレス User = "●●●●●●" ''ユーザー名 Pass = "●●●●●●●●" ''パスワード Target = "C:\Users\●●\Desktop.エクセルファイル.xls" ''送信ファイル If Target = "False" Then Exit Sub Folder = "/home/●●●●●●/●●●●/●●●/状況" rc = FTP.Connect(Server, User, Pass) If rc <> 0 Then MsgBox "FTP接続できませんでした。", vbCritical FTP.Close Exit Sub End If rc = FTP.PutFile(Target, Folder) If rc <> 1 Then MsgBox Dir(Target) & "を送信できませんでした。", vbCritical FTP.Close Exit Sub End If MsgBox Dir(Target) & "を送信しました。", vbInformation FTP.Close End Sub

  • FTPサーバーからのファイルコピー

    勉強させてください。 vb2010.net win764bit FTPサーバーにアクセスし、FTPサーバーにあるCSVファイルをすべて 指定のフォルダにコピーしたいのです。 http://dobon.net/vb/dotnet/internet/ftpwebrequest.html#downloadfile を参考に作成しましたがうまくいきません。 1, Cドライブにコピーしたいのですが下記部分でアクセスに拒否されましたと  エラーが発生します。  Dim fs As New System.IO.FileStream( _ downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write)  フォルダの設定をPrivate Const PATH_Folder = " C:\DATA"から  Private Const PATH_Folder = " \DATA"に変更するとサーバー上にアクセス(ファイルの書き込み)  が行われます。(プログラムの保存先が影響?)  指定したローカルにコピーするにはどうしららよいでしょうか。 2,1でサーバー上にファイルの書き込みができたのですが、FTPサーバーにあるCSVのデータの内容を  書くみたいでコピーできませんでした。  fs.Write(buffer, 0, readSize)をfs.CopyTo()に変更すればいいのではないかとおもい変更してみましたが、  fs.CopyTo(ここがわからない)が理解できずに動作しません。 アドバイスよろしくお願いいたします。 Imports System.Net Imports System.IO Module Module1 'FTP用host Private Const FTP_HOST = "ftp://TEST" 'FTP用USER Private Const FTP_USER = "ftpuser" 'FTP用PASSWORD Private Const FTP_PASS = "ftppass" 'FTPファイルコピー先フォルダ Private Const PATH_Folder = " C:\DATA" Private Function FTPDownLoad() As Boolean FTPDownLoad = False 'Try 'ダウンロードするファイルのURI Dim u As New Uri(FTP_HOST) 'ダウンロードしたファイルの保存先 Dim downFile As String = PATH_Folde Sub Main() '----------------------------- '-- FTP データ取得 '----------------------------- If FTPDownLoad() = False Then body = "FTPからのデータダウンロードに失敗しました。" + vbCrLf + sys_date & sys_time Exit Sub End If Private Function FTPDownLoad() As Boolean FTPDownLoad = False 'Try 'ダウンロードするファイルのURI Dim u As New Uri(FTP_HOST) 'ダウンロードしたファイルの保存先 Dim downFile As String = Palet_PATH_Folder 'FtpWebRequestの作成 Dim ftpReq As System.Net.FtpWebRequest = _ CType(System.Net.WebRequest.Create(u), System.Net.FtpWebRequest) 'ログインユーザー名とパスワードを設定 ftpReq.Credentials = New System.Net.NetworkCredential(FTP_USER, FTP_PASS) 'MethodにWebRequestMethods.Ftp.DownloadFile("RETR")を設定 'ftpReq.Method = System.Net.WebRequestMethods.Ftp.DownloadFile ftpReq.Method = System.Net.WebRequestMethods.Ftp.ListDirectoryDetails '要求の完了後に接続を閉じる ftpReq.KeepAlive = False 'ASCIIモードで転送する ftpReq.UseBinary = False 'PASSIVEモードを無効にする ftpReq.UsePassive = False 'FtpWebResponseを取得 Dim ftpRes As System.Net.FtpWebResponse = _ CType(ftpReq.GetResponse(), System.Net.FtpWebResponse) 'ファイルをダウンロードするためのStreamを取得 Dim resStrm As System.IO.Stream = ftpRes.GetResponseStream() 'ダウンロードしたファイルを書き込むためのFileStreamを作成 Dim fs As New System.IO.FileStream( _ downFile, System.IO.FileMode.Create, System.IO.FileAccess.Write) 'ダウンロードしたデータを書き込む Dim buffer(1023) As Byte While True Dim readSize As Integer = resStrm.Read(buffer, 0, buffer.Length) If readSize = 0 Then Exit While End If fs.Write(buffer, 0, readSize) End While fs.Close() resStrm.Close() 'FTPサーバーから送信されたステータスを表示 Console.WriteLine("{0}: {1}", ftpRes.StatusCode, ftpRes.StatusDescription) '閉じる ftpRes.Close() 'Catch ex As Exception ' MsgBox(ex.Message) ' Exit Function 'End Try FTPDownLoad = True End Function END sub

  • 外部ディレクトリの存在確認と変更

    2点質問させて頂きます。 1つ目は、外部ディレクトリの存在を確認する方法はありますでしょうか? もしありましたら、教えて頂きたいと思います。 「外部ファイル」の場合は、fopenなどを使って 存在は確認できたのですが、「外部ディレクトリ」がいまいち分かりません。 file_existsやis_dirは、外部参照の時は使えませんでした。 2つ目は、また外部サーバー絡みなのですが 外部のディレクトリ名、またはファイル名を 変更する事は可能でしょうか? まだ試していませんが、FTP関数を使って出来るかもしれないのですが それ以外の方法で何かありましたら教えて頂けないでしょうか。 rename関数は使えませんでした。 宜しくお願い致します。

    • 締切済み
    • PHP
  • 列の存在を確認する

    お世話になります Excel2000VBAで For i = 0 to 5   If 列が存在するか(ArrayTmp.Item(i)) Then     Msgbox i & "列目は存在します"   Else     Msgbox i & "列目は存在しません"   End If Next i 以上のように該当する列が存在するかの確認をすることは可能でしょうか? Arraytmpの列数は不定なのでチェックを行いたいのですが

  • VBAでFTPファイル転送がうまくいかない

    利用環境  access:2003  os:xp このサイトを参考にvbaでFTPでファイル転送を実装しようとしています。 http://www.happy2-island.com/access/gogo03/capter90302.shtml 困っているのは、、エラーがでないのですが、ファイルが転送されないということです。 接続先やUserID,パスワードを間違えた場合は、ちゃんとエラーが表示されますので 接続まではできているのではないかと思いますが、最後のFTPファイル転送がうまくいきません。。 インターネットサービスのオープンとFTPサーバへの接続はうまくいっているようですが fcFTPPutFileの結果が何度やってもFALSEになります。 どのあたりを探れば問題がわかりますでしょうか? ご教示いただけますと助かります。 '■外部サーバーへファイルをアップロード Dim lngRC As Long 'インターネットサービスをオープンします lngRC = fcInternetOpen 'オープンに成功したらFTPサーバとの接続を行います If lngRC = 0 Then 'FTPサーバへ接続します lngRC = fcFTPConnect() '接続に成功したら、FTPサーバからファイルをアップロードします If lngRC = 0 Then Debug.Print Err.LastDllError '●↓この結果がFALSEになってしまい、ファイル転送ができません。。。 Call fcFTPPutFile(送り元ファイルパス&ファイル名_ , 送り先ファイルパス&ファイル名 _ , FTP_TRANSFER_TYPE_ASCII) Else MsgBox エラー内容 End If Else MsgBox エラー内容 End If ●↓この結果がFALSEになってしまい、ファイル転送ができません。。。 Public Function fcFTPPutFile(dLc As String, dRmt As String, dMd As Long) As Boolean 'dLc /ローカルファイル 'dRmt/リモートファイル 'dMd /転送モード 'FTPサーバへファイルをアップロード fcFTPPutFile = FtpPutFile(Pub_lngFtpHnd _ , dLc _ , dRmt _ , dMd _ , 0) End Function

  • 忍者へFTP接続でVBAでファイルをアップロード

    忍者へFTP接続でVBAでファイルをアップロードしたいです。 http://officetanaka.net/excel/vba/tips/tips47.htm を参考に実践してるのですがうまくできません。 FFFTPを使っての手動でのアップロードは問題なく行えます。 ----------------------------------------------------------------- Sub Sample1() Dim FTP, rc As Long, Server As String, User As String, Pass As String Dim Target As String, Folder As String Set FTP = CreateObject("basp21.FTP") ''FTPオブジェクト Server = "ftp.xxxxx.com" ''ホストアドレス User = "toru_tanaka" ''ユーザー名 Pass = "password" ''パスワード Target = Application.GetOpenFilename() ''送信ファイル If Target = "False" Then Exit Sub Folder = "/" ''送信フォルダ rc = FTP.Connect(Server, User, Pass) If rc <> 0 Then MsgBox "FTP接続できませんでした。", vbCritical FTP.Close Exit Sub End If rc = FTP.PutFile(Target, Folder) If rc <> 1 Then MsgBox Dir(Target) & "を送信できませんでした。", vbCritical FTP.Close Exit Sub End If MsgBox Dir(Target) & "を送信しました。", vbInformation FTP.Close End Sub ----------------------------------------------------------------- の rc = FTP.Connect(Server, User, Pass) If rc <> 0 Then MsgBox "FTP接続できませんでした。", vbCritical FTP.Close Exit Sub End If これは通過できるのですが、 rc = FTP.PutFile(Target, Folder) If rc <> 1 Then MsgBox Dir(Target) & "を送信できませんでした。", vbCritical FTP.Close Exit Sub End If で0が返るようで、送信できませんでした。となります。 トップページの階層にアップしたい場合は Folder = "/" でいいんですよね? Folder = "/" にしても Folder = ""にしても失敗します。 FFFTPのメッセージランを見ていると、 VBAで送信できなくても ----------------------------------------------------------------- >TYPE A 200 転送タイプを A にセットしました >PASV 227 Entering Passive Mode (***). ダウンロードのためにホスト *** (***) に接続しています. (TCP/IPv4) 接続しました. (TCP/IPv4) >MLSD 150 ASCIIモードのデータ接続をオープンします MLSD 226 転送が完了しました ファイル一覧の取得は正常終了しました. (821 Bytes) ----------------------------------------------------------------- が表示されます。 何が間違ってるのでしょうか? ご教授よろしくお願いします。

  • FTP関数で・・・。

    $cd = ftp_cdup($conn_id);  if($cd == false)  $check=ftp_nlist($conn_id, FTP_DIR_IMG_TEST.$all_data['templatedir']);  if($check == false)  $mkdir=ftp_mkdir($conn_id, FTP_DIR_IMG_TEST.$all_data['templatedir']); このように親ディレクトリに移動したあとに、 フォルダを作ろうとしています。 がパーミッションエラーとなります。 Permission denied. ディレクトリを作成する場合は絶対パスですよね? 実際にコマンドでデータを見ると、 drwxr-xr-x 2 namae gn 512 11 12 18:43 img となっています。 FTPユーザーはgnで入ってますが、 この場合はgnでディレクトリを作成することができないのでしょうか?

    • ベストアンサー
    • PHP
  • リモートのファイル存在確認

    標題の通り、 リモートファイルのファイルの存在チェックをしようと思っているのですが、 シェルに詳しくないのでご教授願いないでしょうか。 通常の同サーバ内では下記のように出来るかと思いますが、 それをssh で別サーバ内のファイル存在チェックをしたいです。 if [ -e /usr/test/test.txt ]; then echo "存在" fi 宜しくお願い致します。