FTPを使ってホームページなどをアップロードするとき、FTPクライアントソフトを使って、マウスでファイルを選択してアップロードする、といった使い方が多いと思いますが、マウスでファイルを選択するのが面倒なとき、いつも同じファイルを更新するので自動にしたい、というニーズはあると思います。
と、言うわけで、Windowsのバッチファイルで簡単にFTPでファイルを自動でアップロードやダウンロードを行うスクリプトを作ってみましょう。
今回は、FTPでパソコン→FTPサーバへファイルを転送する(put) サンプルを記載します。
<前提条件>
FTPサーバ名:XXX.YYY.ne.jp
ユーザID:●●●●●●
パスワード:○○○○○○
動き:パソコン→FTPサーバへファイルを転送する
FTPサーバのデータ転送先フォルダ名: public_html/aaa
パソコンにある、FTPサーバに転送したいファイル名: c:\www\index.html と、c:\www\index2.html
2つのファイルを作成します。
■バッチファイル c:\www\ftpcopy.bat
echo 'FTP転送を開始します'
pause
ftp -s:ftp_bat.txt
pause
■バッチファイルが読み込むファイル c:\www\ftp_bat.txt
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (ログインユーザID)
○○○○○○ (ログインパスワード)
ascii
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd aaa (更にディレクトリ移動)
put c:\www\index.html
(c:\www\index.html ファイルをFTPサーバの ~/public_html/aaa
にコピーします)
put c:\www\index2.html (c:\www\index2.html
ファイルをFTPサーバの ~/public_html/aaa にコピーします)
bye
バイナリファイルを転送する場合は、 バイナリ―モードで設定します(ascii の所を bin にします)
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (ログインユーザID)
○○○○○○ (ログインパスワード)
bin (ファイルを転送するのでバイナリーモードに変更)
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd aaa (更にディレクトリ移動)
put c:\www\index.html
(c:\www\index.html ファイルをFTPサーバの ~/public_html/aaa
にコピーします)
put c:\www\index2.html (c:\www\index2.html
ファイルをFTPサーバの ~/public_html/aaa にコピーします)
bye
次は、FTPでFTPサーバからパソコン側へファイルを転送する(get) サンプルを記載します。
<前提条件>
FTPサーバ名:XXX.YYY.ne.jp
ユーザID:●●●●●●
パスワード:○○○○○○
動き:FTPサーバ→パソコンへファイルを転送する
FTPサーバの転送元フォルダ名: public_html/datas
にある data100.dat と data101.dat
転送先フォルダ名: c:\www\datas
■バッチファイル c:\www\ftpcopy.bat は、先ほどのままです。
■バッチファイルが読み込むファイル c:\www\ftp_bat.txt
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (ログインユーザID)
○○○○○○ (ログインパスワード)
ascii
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd datas (FTPサーバ ~/public_html/datas というディレクトリに移動)
get data100.txt c:\www\data\data100.txt (FTPサーバからパソコンへコピー)
get data101.txt c:\www\data\data101.txt (FTPサーバからパソコンへコピー)
bye
なお、バイナリファイルを転送する場合は、 バイナリ―モードで設定します(ascii の所を bin にします)
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (ログインユーザID)
○○○○○○ (ログインパスワード)
bin (ファイルを転送するのでバイナリーモードに変更)
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd datas (FTPサーバ ~/public_html/datas というディレクトリに移動)
get data100.jpg c:\www\data\data100.jpg (FTPサーバからパソコンへコピー)
get data101.jpg c:\www\data\data101.jpg (FTPサーバからパソコンへコピー)
bye
たくさんのファイルがある場合、まとめて送信するとらくちんです。
そんなときのコマンドが mput, mget です。
次は、FTPでパソコンからFTPサーバへファイルをまとめて転送する(mput) サンプルを記載します。
ファイル名の指定に *.html などワイルドカードが使用できます。
<前提条件>
FTPサーバ名:XXX.YYY.ne.jp
ユーザID:●●●●●●
パスワード:○○○○○○
動き:パソコン→FTPサーバへファイルを転送する
転送ファイル名: c:\www\datas\data100.dat〜data999.dat
FTPサーバの転送先フォルダ名: public_html/datas
■バッチファイル c:\www\ftpcopy.bat は、先ほどのままです。
■バッチファイルが読み込むファイル c:\www\ftp_bat.txt
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (ログインユーザID)
○○○○○○ (ログインパスワード)
ascii
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd datas (FTPサーバ ~/public_html/datas というディレクトリに移動)
mput c:\www\datas\*.txt (パソコンからFTPサーバへまとめてコピー)
bye
なお、バイナリファイルを転送する場合は、 バイナリ―モードで設定します(ascii の所を bin にします)
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (ログインユーザID)
○○○○○○ (ログインパスワード)
bin (バイナリファイルを転送する場合は、バイナリーモードに変更)
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd datas (FTPサーバ ~/public_html/datas というディレクトリに移動)
mput c:\www\datas\*.jpg (パソコンからFTPサーバへまとめてコピー)
bye
次は、FTPでパソコンからFTPサーバへファイルをまとめて転送する(mput) サンプルを記載します。
<前提条件>
FTPサーバ名:XXX.YYY.ne.jp
ユーザID:●●●●●●
パスワード:○○○○○○
動き:FTPサーバ→パソコンへファイルを転送する
FTPサーバの転送元フォルダ名: public_html/datas
にある すべてのファイル
転送先フォルダ名: c:\www\aaa
■バッチファイル c:\www\ftpcopy.bat は、保存先フォルダを指定するため、ちょっと変えます。
echo 'FTP転送を開始します'
pause
cd c:\www\aaa (パソコンの保存先フォルダに移動します)
ftp -s:c:\www\ftp_bat.txt (パスが変わったので、フルパスで読込みファイル名を指定します)
pause
■バッチファイルが読み込むファイル c:\www\ftp_bat.txt
open XXX.YYY.ne.jp (FTPサーバアドレス)
●●●●●● (FTPサーバへのログインユーザID)
○○○○○○ (パスワード)
bin (ファイルを転送するのでバイナリーモードに変更)
prompt (随時発生する y/n
の問い合わせ応答を省略し、 yを押したことにします)
cd public_html (FTPサーバのディレクトリを
public_html へ移動)
cd datas (FTPサーバ ~/public_html/datas というディレクトリに移動)
mget *.* (FTPサーバからパソコンへまとめてコピー)
bye
ちなみに、実行結果はこんな感じとなします。
(バッチファイルをダブルクリックするとどんな環境でも動くと思いますが・・・)
動かなければ、コマンドプロンプトから実行するなどをしてみてください。⇒googleでの検索
C:\www>echo 'FTP転送を開始します' 'FTP転送を開始します' C:\www>pause 続行するには何かキーを押してください . . . C:\www>cd c:\www\aaa C:\www\aaa>ftp -s:c:\www\ftp_bat.txt ftp> open XXX.YYY.ne.jp Connected to XXX.YYY.ne.jp. 220 XXX.YYY.ne.jp FTP server ready. User (XXX.YYY.ne.jp:(none)): 331 Password required for ●●●●●●. 230-/************************************************************************ 230- Welcome to XXX.YYY.ne.jp. 230- You can upload your contents into the /public_html directory only. 230- Please change directory to the /public_html and upload your contents. 230- 230- current disk usage : 23225 Kbyte 230- disk limit : 100000 Kbyte 230-*************************************************************************/ 230- 230 User ●●●●●● logged in. Access restrictions apply. ftp> bin 200 Type set to I. ftp> prompt Interactive mode Off . ftp> ftp> cd public_html 250 CWD command successful. ftp> cd datas 250 CWD command successful. ftp> ftp> mget *.* 200 Type set to I. 200 PORT command successful. 150 Opening BINARY mode data connection for index.html (499 bytes). 226 Transfer complete. ftp: 499 bytes received in 0.00Seconds 499000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for title.gif (5315 bytes). 226 Transfer complete. ftp: 5315 bytes received in 0.00Seconds 5315000.00Kbytes/sec. 200 PORT command successful. 150 Opening BINARY mode data connection for title_s.gif (2776 bytes). 226 Transfer complete. ftp: 2776 bytes received in 0.00Seconds 2776000.00Kbytes/sec. ftp> ftp> bye 221-You have transferred 8590 bytes in 3 files. C:\www\aaa>pause 続行するには何かキーを押してください . . . |
場合があります。
⇒詳しくは「【Windows】FTPコマンドがエラーで実行できない場合(Windows Firewall)」のページを参照ください。
以上です。