前提・実現したいこと
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/ツールのバージョンなど)
コマンドプロンプトでmgetコマンド打ってみて実行できるでしょうか
リアクションありがとうございます。手動でもNGでした。
mgetコマンドは、ftpコマンド上で実行するコマンドです
ぐぐれば使用法が出てくるかと思います
コマンドプロンプトじゃ無くてftpのことですよね?
mget *.txt
cd D:\test
mget *.text
と2回に分けたらどうなりますか?
2回に分けても駄目でした。。
どの時点でどうなりますか?
実行結果をそのまま質問文に載せましょう。
2回に分けたらOKでした。勘違いでした
ということなら、mget にはパス名の\区切りが書けないのかも。
mget *.txt D:/test/*.text
ではどうでしょう?
200 Ascii mode ready
リモート ファイルの一覧が見つかりません。となります。Ngでした。
なるほど。Windowsのftpサーバー、微妙ですね。IISですかね。
D: が駄目なのかな。
ローカルのchange directoryを行うコマンドはlcdですよ
ftp -i -n xx.xx.xx.xx <ftp.txt
としてftp.txtを
user ユーザー名 パスワード
lcd D:\test
mget *.txt
bye
としたらどうなるでしょうか?
Windowsのftpコマンドはpassiveモードが使えないようなのでそれで出来ない可能性もあります。
端末から対話実行してできることを確認してからバッチを書いてください。
ご指示とおり修正してもmgetの部分でフリーズします。固定ファイル名では問題ありませんので、やはりmgetが良くないのかもしれません
動かなかったんですね。
では正確なコマンドラインと正確なファイルの内容をご記載の上、うまく行ったケースと行かないケースの正確な出力内容を記載できる範囲で載せられますか?(アバウトな内容では再現実験ができないので)
現状をお知らせします。
--------------------------
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を使いたいのですがうまくいっていません。
お返事ありがとうございます。度々申し訳ないのですが、「問題無い」や「FTPスクリプトを以下に変えると止まってしまいます」では「正確な出力内容」になっていません。お手数をおかけしますが、記載できる範囲で載せて頂けないでしょうか?
(再現させるにあたり、クライアント/サーバー間の正確なネットワーク構成や、サーバーの各種正確な設定など諸々の情報が足りていないので)
すみませんでした。ログを以下に記載します。
-----------------------------
正常時ログ
-----------------------------
処理開始
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
※先に進まず。。
ありがとうございます。それは不思議ですね。
2つほど試して頂きたいことがあるので、お手数をおかけしてすみませんが、お願いできますでしょうか?
①directoryの一覧を取得できるかの確認
--------------------------
FTPスクリプトファイル中身(ftp.txt)
--------------------------
open XX.XX.XX.XX
USER
PASS
dir
mget *.txt
disconnect
bye
②デバッグ情報の出力
--------------------------
呼び出し元batファイル内
--------------------------
ftp -i -d -s:ftp.txt
よろしくお願いいたします。
①②を追記した実行ログです。
**********
処理開始
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
ありがとうございます。
NLSTのサーバー側レスポンスが返っていないようです。
ftpサーバーのサーバー管理者に問い合わせした方が良さそうですね。
すみませんが、これ以上私に出来ることはありません。