質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

Q&A

解決済

1回答

2397閲覧

FTPでmget後取得できたファイルは消したい

apprio

総合スコア19

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

FTP

FTP(File Transfer Protocol)は、ネットワークでのファイル転送を行うための通信プロトコルの1つである。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

0グッド

0クリップ

投稿2020/09/29 07:46

FTPを使ってファイルを受け取りたいです。
ただ一度受け取ったファイルは、もう受け取りたくありません。

受け取り元を共有してmoveで切り取れればよかったですが、
環境的にFTPしか使用することができません。

なのでFTP mgetで取得後、
取得したファイルだけをDeleteするようにbatが書ければなと思うのですが。
何か良い案はありませんでしょうか。

環境
Windows10、コマンドプロンプト

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kuma_kuma_

2020/09/29 07:52

FTPコマンド自体はこれの事かな https://www.sasukepg.jp/post-882/ ただ「きちんとダウンロードできているか?」については バッチファイルだけでは厳しいかな?
apprio

2020/09/29 07:57

コメントありがとうございます。 URLの通り、使うのはmgetとdelとなります。 mgetしたものだけをdelさせるところに頭を抱えています。 mgetするbatは既にあるので、その際に一時ファイルとしてファイルの一覧を書き出して その一時ファイルに記録されているファイルだけをdelする....とかでしょうか
kuma_kuma_

2020/09/29 08:02

そうですね質問者様がおっしゃられている通り mget自体複数のファイルダウンロードなんでファイル一覧を書き出して...という手法を バッチで行わないといけませんね... あとはls と get を組み合わせて1ファイル毎に処理するしかないですね ただ「正常にダウンロードしたか?」についてはファイルサイズで確認するしかなく これもバッチファイルだけだと面倒な作業になりますね...
apprio

2020/09/29 08:13

正常にダウンロードしたかの確認についてですが mgetのみのbatでlogを取っているのですが、logに以下のような表記があるので そこからファイル名だけ切り取れれば....?とかも考えています。  ftp> mget *.pdf  200 Type set to I.  200 PORT command successful.  150 Opening BINARY mode data connection for abcdefg_yymmdd.pdf (1000 bytes).  226 Transfer complete.  ftp: 1000 バイトが受信されました 0.00秒 100.00KB/秒。  200 PORT command successful. FTPにMOVE的なのがあれば何も困らなかったんですが... batで厳しければVB.netとかですかね。
kuma_kuma_

2020/09/29 08:25 編集

ダウンロードが途中で止まった場合も想定しておかないといけません。 エラーメッセージがうまく取得できれば問題ないのですが。 できればVB.netですが複合技でよければVBScriptを混ぜるのも一つの手段ですね。 (FTPはVBScriptからバッチそのまま実行してファイルの確認等はVBScriptで行う) http://trustmemo.blog9.fc2.com/blog-entry-4.html ※追記 上のURLの記載内容間違いあります
kuma_kuma_

2020/09/29 09:12

http://imasara2script.blogspot.com/2016/05/ftpwsf.html 変に日本語変換されているけど動作的にはこれと似た作りになります。 最後でファイルサイズがダウンロードサイズと一緒になって終了する際 FTPサーバ側を削除するイメージです。
apprio

2020/09/29 10:23

参考ありがとうございます。 色々調べていただいたりしていて失礼なのですが、 やはりbatだけでやるために、いったん全部mgetした後、 ファイルをテキストの一覧として吐き出しておいて 翌日以降はテキストを見て受信済みのものは削除ないし、移す。 といった方法を検討しようかと思います。
kuma_kuma_

2020/09/29 10:31

いいえ、失礼なんてことはないですよ > 翌日以降はテキストを見て受信済みのものは削除ないし、移す。 そうですね、たしかに削除までの間隔をあけるのが一番だと思います。
apprio

2020/09/29 11:14

ありがとうございます。 お手数をおかけしました。
guest

回答1

0

自己解決

batだけで行うのは難しい。

代替えとして
→いったん全部mgetした後、
mgetできたファイルを一覧テキストとして吐き出しておいて
翌日以降は一覧テキストをbatで見て受信済みのものは削除ないし、移す仕組みを検討する。

投稿2020/09/29 11:15

apprio

総合スコア19

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問