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

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

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

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

FTP

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

Q&A

1回答

4412閲覧

batファイルのmget不可

whimyama

総合スコア9

Windows 10

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

FTP

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

0グッド

0クリップ

投稿2021/10/20 03:02

前提・実現したいこと

batプログラムを作成して、別PCからファイルをGETしようとしています。
ファイル名が固定でないので、mgetを使っているのですが、応答がありません。
mgetではアスタリスクは使えないのでしょうか?

発生している問題・エラーメッセージ

mgetでアスタリスクを使用をすると応答なし

該当のソースコード

open xx.xx.xx.xx user password prompt mget *.txt D:\test*.text disconnect bye

試したこと

・promptを外してみても解消しませんでした。
・mgetをgetに変えても当然NGでした。応答あっても受信失敗

補足情報(FW/ツールのバージョンなど)

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

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

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

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

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

y_waiwai

2021/10/20 03:11

コマンドプロンプトでmgetコマンド打ってみて実行できるでしょうか
whimyama

2021/10/20 03:13

リアクションありがとうございます。手動でもNGでした。
y_waiwai

2021/10/20 03:19

mgetコマンドは、ftpコマンド上で実行するコマンドです ぐぐれば使用法が出てくるかと思います
otn

2021/10/20 03:36

コマンドプロンプトじゃ無くてftpのことですよね? mget *.txt cd D:\test mget *.text と2回に分けたらどうなりますか?
whimyama

2021/10/20 03:44

2回に分けても駄目でした。。
otn

2021/10/20 03:58

どの時点でどうなりますか? 実行結果をそのまま質問文に載せましょう。
whimyama

2021/10/20 04:11

2回に分けたらOKでした。勘違いでした
otn

2021/10/20 04:16

ということなら、mget にはパス名の\区切りが書けないのかも。 mget *.txt D:/test/*.text ではどうでしょう?
whimyama

2021/10/20 04:56

200 Ascii mode ready リモート ファイルの一覧が見つかりません。となります。Ngでした。
otn

2021/10/20 05:08

なるほど。Windowsのftpサーバー、微妙ですね。IISですかね。 D: が駄目なのかな。
退会済みユーザー

退会済みユーザー

2021/10/21 06:07

ローカルのchange directoryを行うコマンドはlcdですよ ftp -i -n xx.xx.xx.xx <ftp.txt としてftp.txtを user ユーザー名 パスワード lcd D:\test mget *.txt bye としたらどうなるでしょうか? Windowsのftpコマンドはpassiveモードが使えないようなのでそれで出来ない可能性もあります。 端末から対話実行してできることを確認してからバッチを書いてください。
whimyama

2021/10/23 04:30

ご指示とおり修正してもmgetの部分でフリーズします。固定ファイル名では問題ありませんので、やはりmgetが良くないのかもしれません
退会済みユーザー

退会済みユーザー

2021/10/23 04:38

動かなかったんですね。 では正確なコマンドラインと正確なファイルの内容をご記載の上、うまく行ったケースと行かないケースの正確な出力内容を記載できる範囲で載せられますか?(アバウトな内容では再現実験ができないので)
whimyama

2021/10/23 06:09

現状をお知らせします。 -------------------------- FTPサーバ -------------------------- ルートディレクトリ:C:\test ファイル場所:C:\test\test.txt -------------------------- FTPスクリプトファイル中身(ftp.txt) -------------------------- open XX.XX.XX.XX USER PASS get test.txt disconnect bye -------------------------- 呼び出し元batファイル内 -------------------------- ftp -i -s:ftp.txt 上記では問題無いのですが、FTPスクリプトを以下に変えると止まってしまいます -------------------------- FTPスクリプトファイル中身(ftp.txt) -------------------------- open XX.XX.XX.XX USER PASS mget *.txt disconnect bye 以上です。受信ファイルは可変なので、mgetを使いたいのですがうまくいっていません。
退会済みユーザー

退会済みユーザー

2021/10/23 06:20

お返事ありがとうございます。度々申し訳ないのですが、「問題無い」や「FTPスクリプトを以下に変えると止まってしまいます」では「正確な出力内容」になっていません。お手数をおかけしますが、記載できる範囲で載せて頂けないでしょうか? (再現させるにあたり、クライアント/サーバー間の正確なネットワーク構成や、サーバーの各種正確な設定など諸々の情報が足りていないので)
whimyama

2021/10/23 06:33 編集

すみませんでした。ログを以下に記載します。 ----------------------------- 正常時ログ ----------------------------- 処理開始 2021/10/23 15:28:07.24 STEP1:環境設定 STEP2:受信 ftp> open xx.xx.xx.xx xx.xx.xx.xx に接続しました。 220 Browser Ftp Server. 530 Please login with USER and PASS. ユーザー (xx.xx.xx.xx:(none)): 331 Password required for this user. 230 User Logged In. ftp> get test.txt 200 PORT command successful. 150 Opening data channel. 226 Transfer complete. ftp> disconnect 221 Goodbye. ftp> bye STEP3-1:受信ファイルの有無 STEP4:受信OK 2021/10/23 15:28:09.19 処理終了 ----------------------------- 異常時ログ ----------------------------- 処理開始 2021/10/23 15:29:54.45 STEP1:環境設定 STEP2:受信 ftp> open xx.xx.xx.xx xx.xx.xx.xx に接続しました。 220 Browser Ftp Server. 530 Please login with USER and PASS. ユーザー (xx.xx.xx.xx:(none)): 331 Password required for this user. 230 User Logged In. ftp> mget *.txt ※先に進まず。。
退会済みユーザー

退会済みユーザー

2021/10/23 06:44

ありがとうございます。それは不思議ですね。 2つほど試して頂きたいことがあるので、お手数をおかけしてすみませんが、お願いできますでしょうか? ①directoryの一覧を取得できるかの確認 -------------------------- FTPスクリプトファイル中身(ftp.txt) -------------------------- open XX.XX.XX.XX USER PASS dir mget *.txt disconnect bye ②デバッグ情報の出力 -------------------------- 呼び出し元batファイル内 -------------------------- ftp -i -d -s:ftp.txt よろしくお願いいたします。
whimyama

2021/10/23 07:16

①②を追記した実行ログです。 ********** 処理開始 2021/10/23 16:14:31.99 STEP1:環境設定 STEP2:受信 ftp> open xx.xx.xx.xx xx.xx.xx.xx に接続しました。 220 Browser Ftp Server. ---> OPTS UTF8 ON 530 Please login with USER and PASS. ユーザー (xx.xx.xx.xx:(none)): ---> USER XXX 331 Password required for this user. ---> PASS XXX 230 User Logged In. ftp> dir ---> PORT 10,0,32,83,211,114 200 PORT command successful. ---> LIST 150 Opening data channel. -rw-rw-rw- 1 user group 0 Oct 23 07:11 test.txt 226 Transfer complete. ftp: 65 バイトが受信されました 0.12秒 0.56KB/秒。 ftp> mget *.txt ---> TYPE A ---> PORT 10,0,32,83,211,115 ---> NLST *.txt
退会済みユーザー

退会済みユーザー

2021/10/23 07:40

ありがとうございます。 NLSTのサーバー側レスポンスが返っていないようです。 ftpサーバーのサーバー管理者に問い合わせした方が良さそうですね。 すみませんが、これ以上私に出来ることはありません。
guest

回答1

0

IISのFTPサーバーを作ってやってみましたが、
cd get mgetなどサーバー側のパスの指定で、ドライブ名は使えませんね。
そもそも、FTPサーバーサイトを作る時点でフォルダーを指定して、その中から出られないのでドライブ名は無意味と言うことでしょう。

ということで、私のコメントの、

mget *.txt

cd D:\test
mget *.text
と2回に分けたらどうなりますか?

cdでもドライブ名が使えないはずで、

2回に分けたらOKでした。

というのは、cd \testとしたのでは?

「FTPサーバーサイトを作る時点で指定したフォルダー」がルートディレクトリになるという前提で、サーバー側のファイル名・パスを指定する必要があります。

mget *.txt

cd \test
mget *.text

でうまくいったのなら、それを1回でやるなら、
mget *.txt /test/*.text
でしょうか。

投稿2021/10/23 05:43

otn

総合スコア85901

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

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

whimyama

2021/10/23 06:08

環境まで構築いただきありがとうございます。現状をお知らせします。 一度うまくいったのは、異なるFTPサーバを利用していたからかもしれません。 -------------------------- FTPサーバ -------------------------- ルートディレクトリ:C:\test ファイル場所:C:\test\test.txt -------------------------- FTPスクリプトファイル中身(ftp.txt) -------------------------- open XX.XX.XX.XX USER PASS get test.txt disconnect bye -------------------------- 呼び出し元batファイル内 -------------------------- ftp -i -s:ftp.txt 上記では問題無いのですが、FTPスクリプトを以下に変えると止まってしまいます -------------------------- FTPスクリプトファイル中身(ftp.txt) -------------------------- open XX.XX.XX.XX USER PASS mget *.txt disconnect bye 以上です。受信ファイルは可変なので、mgetを使いたいのですがうまくいっていません。
otn

2021/10/23 07:06

> 一度うまくいったのは、異なるFTPサーバを利用していたからかもしれません。 IISのftpサーバーじゃないものを利用しているのなら、何を使っているか書かないと。 IISのftpサーバーだと問題なくうまくいくと言うことですか?
whimyama

2021/10/23 07:09

すみません。。そうですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問