ユーザーの操作なしに1つのコマンドラインでFTPサイトからファイルをダウンロードする方法(Windows)


13

Windowsのコマンドラインから実行できるFTPコマンドがあり、FTPサイトからファイルをダウンロードします。ユーザーとパスワードは、「その」1行のコマンドで指定されます。これらのオプションとパスワードのパススルーは、そのコマンドラインにある必要があります。

echo open 192.168.1.64 21> ftp.txt
echo anonymous>> ftp.txt
echo ftp@ftp.com>> ftp.txt
echo bin >> ftp.txt
echo get test.txt >> ftp.txt
echo bye >> ftp.txt

ftp -s:ftp.txt

FTP経由でダウンロードする必要がありますか、それとも任意のプログラムでそれらのファイルをダウンロードする必要がありますか?(Rsyncは、同期する名前の付いたファイルとコマンドラインから読み取ることができます。Scpは、コマンドラインから読み取ることもできます。どちらもプレーンテキスト、no_true_security FTPほど古くはありません)。
Hennes

回答:


13

これを試してください:バッチファイル-無人FTPダウンロード

WGET ftp://ftp.mydomain.com/path/file.ext  

匿名ダウンロード用

または:

WGET ftp://user:password@ftp.mydomain.com/path/file.ext  

認証が必要な場合。


@XavierStuvwが編集やコメントを介して指摘したWGETように、小文字へのスワップwgetはLinuxで機能します。

wget ftp://user:password@ftp.mydomain.com/path/file.ext

1行にユーザーとパスワードの切り替えオプションがあるコマンドが表示されません。
soundhax


2
スーパーユーザーへようこそ!これは理論的には質問に答える可能性がありますが、答えの本質的な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
カナダのルーク

1
@CalvT異議なし。コメントの想定される利点は、Linuxユーザーがインターネット検索後にこのページにアクセスし、それが適用されるシステムを監視できることです。実際、それは私に起こりました。
XavierStuvw 2017年

1
@CalvTタイトルは確かに正確ですが、検索エンジンは多くの場合、回答フレーム全体を視覚化するので、それに飛び散るのは簡単です。もちろん、これは読者の注意をそらすものではありませんが、この場合、LinuxとWindowsの手順が基本的に同じであることは偶然でした。ありがとうございます。
XavierStuvw 2017年

8

私は方法を見つけました:

echo open 192.168.0.1 >> ftp &echo user admin w00t >> ftp &echo binary >> ftp &echo get file.zip >> ftp &echo bye >> ftp &ftp -n -v -s:ftp &del ftp

私が試したところ、これは機能しませんでした(代わりにWinSCPのコマンドラインクライアントを使用しまいました)。テストされたWindowsのバージョンは何ですか?
Peter Mortensen、2016年

このラインがどのように機能するか説明していただけませんか?ドキュメントが見つかりません。私はそれがPSFTPで動作するようにしようとしている
stallingOne

@stallingOneを改行と考えてください&...実際には複数のコマンドです。基本的に彼は、を使用して1行ずつスクリプトを作成し、echoそれftpを実行するように指示します。彼はスクリプトファイルにftpも名前を付けているため、混乱を招きます。
Havenard

ファイル名の選択が不適切です。「ftp」は、彼が作成しているスクリプトのファイル名とexeの名前の両方です。そのため、でのパスの解決ftp -n -v -s:ftpは少しおかしいです。(「ftp」の使用はそれぞれ異なるものを指します)
チャドショギンズ

2

/?を使用すると、DOSでコマンドの構文を要求できることに注意してください。スイッチ。例えば:

C:\> ftp /?

FTPサーバーサービスを実行しているコンピューターとの間でファイルを転送します
(デーモンと呼ばれることもあります)。Ftpはインタラクティブに使用できます。

FTP [-v] [-d] [-i] [-n] [-g] [-s:filename] [-a] [-A] [-x:sendbuffer] [-r:recvbuf
fer] [-b:asyncbuffers] [-w:windowsize] [host]

  -vリモートサーバーの応答の表示を抑制します。
  -n初期接続時に自動ログインを抑制します。
  -i複数のファイルの間の対話型プロンプトをオフにします
                  転送。
  -dデバッグを有効にします。
  -gファイル名の展開を無効にします(GLOBコマンドを参照)。
  -s:filename FTPコマンドを含むテキストファイルを指定します。の
                  コマンドは、FTPの開始後に自動的に実行されます。
  -aデータ接続をバインドするときに任意のローカルインターフェイスを使用します。
  -匿名でのログイン。
  -x:send sockbufデフォルトのSO_SNDBUFサイズ8192を上書きします。
  -r:recv sockbufデフォルトのSO_RCVBUFサイズ8192を上書きします。
  -b:async countデフォルトの非同期カウント3を上書きします
  -w:windowsizeデフォルトの転送バッファーサイズ65535を上書きします。
  hostリモートのホスト名またはIPアドレスを指定します
                  接続するホスト。

ノート:
  -mgetおよびmputコマンドは、yes / no / quitにy / n / qを使用します。
  -コマンドを中止するには、Control-Cを使用します。

あなたの場合、-sスイッチを使用して、ログイン応答を含むスクリプトをスクリプトにフィードする必要があります。

例えば:

  1. 次の内容のスクリプトファイル(c:\ scriptfile.txt)を作成します。

    open
    servername_or_ip
    username
    password
    get
    /fullpath/thefile.txt
    c:\fullpath\thefile.txt
    quit
    
  2. -sスイッチを使用してftpを実行し、スクリプトファイル名を指定します

    C:\>ftp -s:c:\scriptfile.txt
    

Windows XP(はい、はい、知っています)では、これは「不明なホスト/?」という結果になります。
Peter Mortensen
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.