バッチファイルの中からWindows付属のFTPコマンドを呼び出して、自動的にファイルをサーバーにアップロードしたり、サーバーからファイルをダウンロードすることができます。
実はこれを知っていると大変便利だったりします。
特に、毎日トップページを更新しなければならないニュースサイトなどでは、作業の手間がかなり省けます。
皆さんもホームページをアップロードしたりするときに、FTPソフトというものを使ったりすると思います。Windowsで動くFTPソフトは、ファイルをマウスで選択したり、カーソルキーで選んでメニューからコマンドを実行するだけで簡単にサーバーとファイルのやりとりをすることができますが、実はソフト内部では、サーバー側に文字でコマンドを送って、指示を出しています。
それではまず、バッチファイルから利用する前に、このコマンドの使い方について説明させて頂きます。
FTPコマンドの起動
MS-DOSプロンプトまたはコマンドプロンプトを起動し、
FTP エンターキー
と入力してみてください。なにやらごちゃごちゃと表示された後、
FTP>
と表示されます。ここにコマンドを打ち込んで、サーバーとやりとりをします。
サーバーへの接続
FTPコマンドが起動したところで、早速サーバーに接続していましょう。
FTP>
と表示されている状態で、以下のように入力してください。
open hostname.domain
この「hostname.domain」の部分には、接続先のサーバーのFTPホスト名を入力します。
すると、今度は
Connected to hostname.domain.
User (hostname.domain:(none)):
と表示され、ユーザー名を尋ねてきますので、入力してください。
サーバーによっては、ユーザー名を尋ねてくる前に、何かごちゃごちゃと表示されるかもしれませんが気にしないでください。
次に
331 Password required for username.
Password:
の用に表示され、パスワード入力を求められますから、正しく入力してください。このとき、入力されたパスワードは画面に表示されることはありません。
パスワードを入力してエンターキーを押すと、
FTP>
の状態になります。もし、このときに、
530 Login incorrect.
Login failed.
のような表示が出た場合には、ユーザー名かパスワードのいずれかが間違っています。
もう一度ご確認の上、正しく入力してください。
利用できる簡単なコマンド
正常に接続されると、以下のようなコマンドが使えます。
なお、ここでは必要と思われる最低限度のコマンドを紹介します。
ls: サーバーのファイル一覧を表示します。
cd ディレクトリ名: サーバー側のカレントディレクトリを変更します。
lcd ディレクトリ名: ローカル側のカレントディレクトリを変更します。
pwd: サーバー側のカレントディレクトリを表示します。
mkdir ディレクトリ名: サーバー側に指定の名前でディレクトリを作成します。
ascii: 転送モードをアスキーモード(テキストやHTMLファイルを転送するモード)に変更します。
bin: 転送モードをバイナリモードに変更します。
get サーバー側ファイル名 保存ファイル名: サーバー側ファイル名で指定されたファイルを保存ファイル名で指定された名前でサーバーからダウンロードします。
なお、同じファイル名で普通にダウンロードするときには、保存ファイル名の指定は不要です。
put ファイル名: サーバーに指定のファイルをアップロードします。
mget ワイルドカードでのファイル指定: 指定されたワイルドカードに従って、ファイルをサーバーからダウンロードします。
mput ワイルドカードでのファイル指定: 指定されたワイルドカードに従って、ファイルをサーバー側にアップロードします。
rm ファイル名: 指定のファイルをサーバーから削除します。
quit: サーバーとの接続を切断し、FTPを終了します。
使用例
たとえば、「index.html」というファイルをサーバーからダウンロードしたいときには、通常以下のようにします。
FTP>ascii
>get index.html
HTMLファイルですから、テキストモードで転送する必要があるので、asciiと入れてモードを変更しています。
つぎに、「test.lzh」というファイルをサーバーにアップロードするには以下のようにします。
FTP>bin
FTP>put test.lzh
LZHのファイルはバイナリですから、binと入れてモードを変更しています。
バッチファイルからの利用
前置きが大変長くなりましたが、いよいよこのコマンドをバッチファイルから利用する手順です。
通常、バッチファイルからFTPコマンドを利用する場合には、すべて自動実行させたいことがほとんどですから、以下のように記述します。
ftp -i -s:指示ファイル名
子の指示ファイルは、FTPコマンドに実行させたい操作を書き並べたテキストファイルです。
書き方は以下のようになります。
1行目 open hostname.domain
2行目 username
3行目 password
ここから処理内容
最終行 quit
たとえば、サーバー「test.com」にユーザーネーム「guest」、パスワード「1234」でログインし、「tomg.txt」をダウンロードしてサーバーとの接続を切断するには、以下のような指示ファイルを作成します。
open test.com
guest
1234
get tomg.txt
quit
さて、それではこれを使って何か作成してみましょう。
便利な実例
サイトのトップページに、管理人のコメントや、新着情報などが載っているページをよく見かけます。
たしかに、これは見ている側からすれば何処が更新されたかなどをすぐに知ることができて便利なのですが、やる方は面倒くさくてたまりません。
でも、こういうところに限ってアクセス数多かったりするんですよね。そこでこれを簡単にやるためのバッチファイルを作成してみましょう。
ここでは、例として、トップページ(index.htm)と、管理人の日記(diary.htm)を毎日更新することにします。
これらの二つを含め、ホームページ関連のファイルは、Cドライブの「homepage」ディレクトリ(C:\homepage)にあるものとします。
ホームページの編集には、どのパソコンにも入っているメモ帳を利用します。
FTPの接続ホスト名は「test.com」、ユーザー名は「guest」、パスワードは「1234」として作成してみます。
まず最初に、FTPコマンドに送る指示ファイルを作成します。
ファイル名は「ftpctrl.txt」としましょう。
open test.com
guest
1234
ascii
put index.htm
put diary.htm
quit
それでは、いよいよバッチファイル本体の作成です。
@ECHO OFF
REM File Name HPNEW.BAT
ECHO 毎日の更新作業を行います。
ECHO 日記から更新がんばりましょう。
C:
CD homepage
NOTEPAD diary.htm
ECHO お疲れ様でした。次はトップページを書き換えましょう。
NOTEPAD index.htm
ECHO それでは転送します。
FTP -i -s:ftpctrl.txt
ECHO お疲れ様でした。
EXIT
終わりに
今回のはひたすら長かったですが、皆様いかがでしたでしょうか?
ネットワーク関連の専門用語が出てきたり、管理人の説明がへたくそだったりと、やってみるにはちょっと面倒くさいのですが、使い始めるとかなり便利で手放せなくなりますので、毎日のホームページ更新のお供に是非ご活用ください。