• ベストアンサー

FTPで毎回違うファイル名を受信する

utf7の回答

  • ベストアンサー
  • utf7
  • ベストアンサー率29% (11/37)
回答No.2

mget, mdeleteで行う方法もあると思いますが、この方法を使うと、1つだけまずいことがあります。 例えば、こちらが先方の情報を見た瞬間はファイルが10個あったとします。こちらが先方のファイルをFTPで取得し、ワイルドカードを使用した方法でファイルを消そうとすると、この間に先方がファイルを1つ出力・合計11個となった場合、新しく作成されたファイルはこちらが取得せずに消してしまうという可能性が考えられます。 そのため面倒かもしれませんが、dirコマンドなどでこちらが取得する時点でのファイルリストを取得し、それに基づいてget、deleteするのがいいと思われます。ですがこの場合でも、例えば先方がファイルサイズが大きいファイルを作成している最中にこちらがそれを取得してしまい、内容が不完全な状態でgetしてしまうということもあります。 回避策はMD5によるチェックなどがありますが、ここまでの考慮が必要なければ上記の方法のみでも良いかもしれません。 自分のものではない先方のファイルを消そうとするのですから、シンプルとはいえ、多少は凝った方が安全と思われます。

Ref16570
質問者

お礼

ご意見ありがとうございます。 MGET,MDELETEの件、大変勉強になりました。 ごもっともだと思います。 ファイルの作成中の対応と致しましては、 ヘッダー及びトレーラーを付与して頂けるとの事ですので、トレーラー内のデータ件数のチェックを行い、トレーラーが存在しない場合は受信失敗と見なし、リトライを検討しております。 ご意見、大変参考になりました。 MD5とは何でしょうか?

関連するQ&A

  • FTPファイルのget後のファイル削除について

    IIS7.5とWindows Server 2008 R2でFTPサーバーを構築しています。 FTPサーバーにファイルを保存して、そのファイルをお客様がFTPサーバーに 接続してgetします。 その際に、同じファイルが2回get出来ないように、getされたファイルのみを 削除したいと考えています。 また、getされた場合だけ削除したいので、getされていないファイルの削除は 出来ない為、コマンドによる自動削除は行えません。 getされた場合にのみ該当ファイル削除するようなソフトや方法などがあれば お教え下さい。 宜しくお願い致します。

    • ベストアンサー
    • HTML
  • FTPサーバーから受信したファイル一覧からファイル名だけを取得したいです

    こんばんは。いつもお世話になっております。 VB.NET+WinXPなのですが、 FTPサーバーにログインして、 LISTコマンドでファイル一覧を要求すると 「drwxrwxr-x 2 53 53 4096 Feb 28 2006 abc」 などというファイルやフォルダの一覧がかえって来ると思うのですが、 この中からファイル名やフォルダ名だけを取得するには どうしたらよいでしょうか。 TABやコンマが入っていないので、文字列関数で切り取るにも 区切りがわからないと思うのです。 ローカルドライブのDir関数なら、FileAttribute.Nomalや.Directoryの指定でファイル名だけや ディレクトリー名だけを指定して 取得することが出来るのですが、FTPサーバーの場合からの場合はどういった方法があるでしょうか。 参考程度でも構いませんので教えて頂けるとたすかります。m(__)m

  • ftpのgetコマンドで425エラー

    ftpについて質問です。 質問1 getコマンド時に『425 Unable to build data connection: Connection timed out』となる原因がわかりません 質問2 フォルダ名やファイル名が日本語だとコマンドが認識されないのですが、FTPの仕様でしょうか 【環境】 ローカルPCのOS:windows7 サーバのポート解放状況:21番は空いてますが、20番は閉じてます エクスプローラを使用してアドレスバーに『ftp://サーバ名』を入力すると接続でき、マウスのドラッグドロップでダウンロードできますが DOSコマンドプロンプトで接続すると、dirコマンドやgetコマンドがエラーになります。 なお!dirはlcdは成功します。 (↓↓↓以下、コマンドの履歴↓↓↓) C:\>ftp ○○○ ○○○ に接続しました。 ~省略~ 230 User ○○○ logged in ftp> cd ○○○ 250 CWD command successful ftp> binary 200 Type set to I ftp> get ○○○.zip 200 PORT command successful 425 Unable to build data connection: Connection timed out ftp> dir 200 PORT command successful 425 Unable to build data connection: Connection timed out ftp> (↑↑↑コマンドの履歴ここまで↑↑↑) よろしくお願いします。

  • ftp処理でmove(移動)を行いたい

    バッチ処理でデータをftp受信しています。 --------------------------- ユーザ名 パスワード prompt mget abc*.log mdelete abc*.log bye --------------------------- このようなコマンドを行っています。 ftpサーバにはさまざまなファイルが随時生成されます。 この処理では定期的に abcで始まる全てのログファイルをgetし、 abcで始まる全てのログファイルをdeleteしています。 ところが、abcで始まるファイルの生成がランダムのため、 偶然mgetが終わった後でファイルが生成され、 mdeleteを行うと、getしていないファイルまで削除される恐れがあるのです。 そのため、一件ずつ移動を行いたいのですが、 調べてもmoveのようなコマンドがftpで見当たらないのですが なにか、moveに置き換わるような処理はないでしょうか? *windows同士の通信です。

  • FTPコマンドでyymmddファイルをgetしたい

    FTPコマンドでのファイルのGETに関しての質問です。 GETするファイルがGETする日付のファイル名 (例090825.lzh 090826.lzh) となっている。 このファイルは日々追加され、ファイル名は当日のファイル名となる。この追加された日付けのファイル【yymmdd.lzh】をGETしたい。 また FTPの操作はスケジュールを組んでで自動実行するようにする。 この自動実行(batファイル)するftpでのGETするファイル名の指定方法を教えてください。 以下は試行してみました。 get yymmdd.lzh get *.lzh いずれも「ファイルが見つからない」と帰ってきました。 よろしくお願いします。

  • ftpでファイル追加バックアップ

    ftpを利用してファイルのバックアップをしたいです。 リモート側はファイルがどんどん溜まっていきます(日に数10ファイル)。 ローカル側で同じディレクトリ内に1日1回 mget *.* でgetしてきたいのですが、普通にやると、 過去にgetしたファイルも改めて上書きでgetしてきてしまいます。 ローカルにあるファイル名とリモートにあるファイル名を見極めてローカルにあるファイル名の ファイルはgetしてこないコマンドはありませんか?

  • FTPで中途半端なファイルをGETしてしまう。

    相手先にてFTPサーバーを構築しファイルをセットして頂き、こちら側よりFTPでGETしていくような形での情報連携を考えています。 数キロバイトレベルのファイルであれば何ら問題無いのですが、数メガレベルになってくると、セット途中のファイルをGETしてしまい、正しいファイルを取得することができません。 (配置途中のファイルがFTP上に見えてしまう) 相手先はLINUXにて構築、こちら側はWIN2012SERVERになります。 FTPでの方式を変更しない形での解決策ってございますでしょうか?

  • 同一ファイル名を開く+受信

    こんにちは、ご存知の方がいらしゃっいましたら教えてください。  2台のパソコンがあります。   1:パソコン1からパソコン2にCSVファイルA、B、C・・・をFTP     する   2:パソコン2上で、パソコン1から受信したファイルをEXELファイルで     開いた後、マクロで自動計算後保存する。  このとき、1から2へFTPするファイルと、2で展開するファイル名が 同じファイル名なので、たまたま同一タイミングだとロック(?)して開か なくなってしまいます。  1から2へのFTP時に、2でファイルを開くことに待ちをかけることを やりたいのですが、方法がありましたら教えてください。  よろしくお願いします。  (1から2へのFTPの方にはできれば、待ちをかけたくないところです)

  • バッチファイルからftpコマンドを使って不特定のファイルをダウンロードしたい。

    バッチファイル上のftpコマンドを使ってftpサーバーにあるカレントディレクトリー以下のファイルを一切合切ダウンロードしたいのですが、なんかいい方法ありませんか?   ↓ここをなんとかしたいのですが   dir|mget ※[]は各設定を入れる ↓バッチファイル ----------------------------------- ftp open [127.0.0.1] [User] [Password] dir | mget by --------------------------------

  • バッチファイルにてFTPで指定したファイルを取得する

    OSはWindoswXPProです。 以下のようなBATファイルとバッチファイルを作成しました。 ---FTP.bat--- echo off ftp -s:get.ftp ---get.ftp--- open 10.0.X.X username password cd /log get log.yymmdd(実際には日付) c:\access_all_log.txt quit logというディレクトリには日次でログファイルが作成され ファイル名としてlog.yymmddと名づけられています。 やりたいことは2つあります。 1つめはftpするファイル名の日付部分をコマンドなどから 範囲指定して取得するファイルを指定できないか。 (たとえば070301~070315のファイルを一括で取得したい) 2つ目はftpでのファイル取得終了後に続いて バッチスクリプトを流したいのですが、その方法。 お分かりになる方いらっしゃいましたらよろしくお願いいたします。