プロが教えるわが家の防犯対策術!

バッチ処理でデータをftp受信しています。
---------------------------
ユーザ名
パスワード
prompt
mget abc*.log
mdelete abc*.log
bye
---------------------------
このようなコマンドを行っています。
ftpサーバにはさまざまなファイルが随時生成されます。

この処理では定期的に
abcで始まる全てのログファイルをgetし、
abcで始まる全てのログファイルをdeleteしています。

ところが、abcで始まるファイルの生成がランダムのため、
偶然mgetが終わった後でファイルが生成され、
mdeleteを行うと、getしていないファイルまで削除される恐れがあるのです。

そのため、一件ずつ移動を行いたいのですが、
調べてもmoveのようなコマンドがftpで見当たらないのですが
なにか、moveに置き換わるような処理はないでしょうか?

*windows同士の通信です。

A 回答 (3件)

ftpはあくまでファイル転送プロトコルなのでmoveなどは無いです。


こんな感じでバッチファイルで。テストはしていません。

set HOST=ホスト名
set USER=ユーザ名
set PASS=パスワード
echo %USER%>tmp1
echo %PASS%>>tmp1
echo ls abc*.log tmp2>>tmp1
echo quit>>tmp1
ftp -s:tmp1 %HOST%
echo %USER%>tmp1
echo %PASS%>>tmp1
for /f %%F in (tmp2) do (echo get %%F&echo delete %%F)>>tmp1
echo quit>>tmp1
ftp -s:tmp1 %HOST%

別の方法として、Windowsホストのftpサーバーって使ったこと無いのでわかりませんが、もしかすると

ren abc*.log abc*.tmp
もしくは
quote site ren abc*.log abc*.tmp

が効けば、後は
prompt
mget abc*.tmp
mdelete abc*.tmp
受信後に、ren abc*.tmp abc*.log で名前を戻す。
    • good
    • 0
この回答へのお礼

あえて名称を変える処理も思いつきませんでした。
そういう方法もあるのですね!
目からうろこです。早速試してみます
最近は便利な機能が最初からセットされているものが増えているため、
こういった、「こうしてはどうか?」といった
考え方がなかなか出来なくなっている気がします。

丁寧なご回答ありがとうございました(^^)。

お礼日時:2006/10/10 20:48

はじめまして。



以下の様な流れではだめでしょうか。

1.ftp接続し、対象ファイルの一覧を取得する。
※一時ファイルに保存する。

2.ファイル一覧のファイルをget,deleteする。
※一時ファイルの一覧について処理を行う。

3.1.2.を繰り返す。

これであれば、サーバへの接続方法はftpだけで対応ができます。
    • good
    • 1
この回答へのお礼

確かに!一覧を先に取得しておけば
それだけを取得・削除が出来そうですね。

ご回答ありがとうございました(^^)

お礼日時:2006/10/10 20:42

telnetして moveをつかう  じゃだめなのかな?

    • good
    • 0
この回答へのお礼

ftpサーバは別会社のもので、
ユーザ名とパスワードを振り分けられているのです。

ftpログインなどの管理・チェックも行っているため、
telnet利用はだめかと思います。
他に方法がなければ提案してみますね。

ご回答ありがとうございました(^^)

お礼日時:2006/10/07 16:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A