【Windows10】.batファイルからFTPしてファイルをダウンロードする方法
2019/05/17
「NextFTP」や「ffftp」などのFTPクライアントソフトを起動し、対象のファイルをダウンロードする、という手順を毎日踏むのが面倒くさくなってきたので、ダブルクリックしたらFTPコマンドで指定のディレクトリに指定のファイルをダウンロードするという .bat ファイルを作成してみたので備忘録を兼ねてご紹介します。
.batファイルを作成するなんて、MS-DOSを使っていた専門学校時代以来久しぶりですわ(笑)
ターミナルでFTPコマンドを使用する
.batファイルを作る前にまず、ターミナル(DOS窓)からFTPコマンドを使ってファイルをダウンロードできるかをテストしてみます。
これが出来ない場合は.batファイルを作っても意味ないですからね。
大体、以下のようにすれば出来ると思います。
ちなみに私の場合は、室内にあるUNIXサーバのファイルに対してアクセスする仕様となっております。
1 2 3 4 5 6 7 8 9 10 11 |
C:\Users\yamada>ftp ftp> open 192.168.***.*** 192.168.***.*** に接続しました。 220 (vsFTPd 2.0.5) 530 Please login with USER and PASS. ユーザー (192.168.***.***:(none)): yamada 331 Please specify the password. パスワード: 230 Login successful. ftp>cd /var/www/yamada-develop/public_html/db_dumps |
↑ ftpを起動し、openコマンドで接続先を指定。
cdでディレクトリを移動します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
ftp> ls -al 200 PORT command successful. Consider using PASV. 150 Here comes the directory listing. drwxrwxr-x 2 501 504 4096 Apr 14 08:01 . drwxrwxr-x 16 0 504 4096 May 09 2017 .. -rw-r--r-- 1 501 504 245875406 Apr 08 06:07 system_20180408.sql.tar.gz -rw-r--r-- 1 501 504 245875642 Apr 09 06:07 system_20180409.sql.tar.gz -rw-r--r-- 1 501 504 246054922 Apr 10 06:07 system_20180410.sql.tar.gz -rw-r--r-- 1 501 504 246204183 Apr 11 06:07 system_20180411.sql.tar.gz -rw-r--r-- 1 501 504 246383376 Apr 12 06:07 system_20180412.sql.tar.gz -rw-r--r-- 1 501 504 246550090 Apr 13 06:07 system_20180413.sql.tar.gz -rw-r--r-- 1 501 504 246676556 Apr 14 06:07 system_20180414.sql.tar.gz ←★これ 226 Directory send OK. ftp: 794 バイトが受信されました 0.02秒 49.63KB/秒。 |
↑ UNIXのコマンドである ls -al でファイル一覧を表示。
MS-DOSの dir コマンドは残念ながら効きませんでした。
今回は「system_20180414.sql.tar.gz」をダウンロードします。
1 2 |
ftp> lcd I:\website_data\SYSTEM.JP\system.jp\backup ローカル ディレクトリは現在 I:\website_data\SYSTEM.JP\system.jp\backup です。 |
↑ lcd(える・しー・でぃー)コマンドで、ダウンロードしたいパス、ディレクトリ(フォルダ)を指定。
1 2 3 4 5 |
ftp> get system_20180414.sql.tar.gz 200 PORT command successful. Consider using PASV. 150 Opening BINARY mode data connection for system_20180414.sql.tar.gz (246676556 bytes). 226 File send OK. ftp: 246676556 バイトが受信されました 2.70秒 91327.86KB/秒。 |
↑ getコマンドでファイルを指定フォルダへダウンロードします。室内サーバなので2秒で完了。爆速。
1 2 |
ftp> bye 221 Goodbye. |
↑ byeでFTPを終了。
.batファイルを作成する
以上を踏まえて、.batファイルを作成したいと思います。
.batファイルと 内容が空の.txt、2種類のファイルを用意
実行用の.batファイルと、ログファイル用の空テキストの2つを用意します。
.batファイル、空の.txtファイルの名前は任意で構いません。
今回は dl.bat、getftp.txt とします。
dl.batは以下のように書けば、大体大丈夫だと思います。
remから始まる行は .batファイルに書いているコメントです。
「←★」はこのポスト用の解説用コメントです。実際のbatファイルには書かないので注意。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
@echo off rem ファイル名設定 set YYYY=%date:~0,4% ←★年 set MM=%date:~5,2% ←★月 set DD=%date:~8,2% ←★日 rem 空ファイルにログを書き込んでいく echo open 192.168.***.***> getftp.txt ←★接続先IPアドレス echo ftpusername>> getftp.txt ←★ftpのユーザID echo ftppassword>> getftp.txt ←★ftpパスワード rem ディレクトリ移動 echo cd /var/www/yamada-develop/public_html/db_dumps>> getftp.txt ←★ダウンロードするファイルが有るディレクトリまで移動 rem ダウンロード先を指定 echo lcd I:\website_data\SYSTEM.JP\system.jp\backup>> getftp.txt ←★ダウンロードするローカル(PC)のディレクトリを指定 rem ダウンロード実行 echo get system_%YYYY%%MM%%DD%.sql.tar.gz>> getftp.txt ←★対象ファイルをダウンロード echo close>> getftp.txt echo bye>> getftp.txt echo <<< FTP実行中 >>> ←★ターミナル(DOS窓)に表示します ftp -s:getftp.txt > %YYYY%%MM%%DD%ftplog.txt ←★20180414ftplog.txt の様なログファイルを作成 exit |
ターミナルでは年月日を別々に取得できない(らしい)ので、date で取得した 20180414 の様な文字列を分解して YYYY, MM, DD に代入します。(面倒)
あとは、先にテストしたコマンドどおりの動きを書けば問題ありません。
.batファイルを起動する
.batファイルをダブルクリックすれば実行されます。
↑ 実行中の様子
「<<< FTP実行中 >>>」がecho されています。
結果
↑ ダウンロードされたファイルとログファイルが増えて、ファイルが4つになりました。
20180414ftplog.txt の様な実行日がファイル名に入ったログファイルが新規作成され、用意した空ファイル(getftp.txt)にはログファイルと同内容が書かれています。
ログファイルは新規に作成されますが、getftp.txt は実行するたびに上書きされる仕様としています。
あとはデスクトップにショートカットを作成するなり、スタートアップに登録するなどして、指定ファイルを(できるだけ少ない手順で)ダウンロード出来るようにすれば完成です。
参考にしたサイト様
https://www.sasukepg.jp/post-882/