【Windows】FTPで自動でアップロード・ダウンロードするバッチファイルの作り方


PC/プログラム/ゲーム/ネット系レポ TOPはこちら

バッチファイルで簡単にワンクリックでFTP転送を行いたい

FTPを使ってホームページなどをアップロードするとき、FTPクライアントソフトを使って、マウスでファイルを選択してアップロードする、といった使い方が多いと思いますが、マウスでファイルを選択するのが面倒なとき、いつも同じファイルを更新するので自動にしたい、というニーズはあると思います。

と、言うわけで、Windowsのバッチファイルで簡単にFTPでファイルを自動でアップロードやダウンロードを行うスクリプトを作ってみましょう。

FTPでファイル転送を行う簡単なバッチファイル(put=サーバにアップロード)

今回は、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でファイル転送を行う簡単なバッチファイル(get=サーバからダウンロードの場合)

次は、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

まとめて送信するmget/ mput の例

たくさんのファイルがある場合、まとめて送信するとらくちんです。

そんなときのコマンドが mput, mget です。

FTPでファイル転送を行う簡単なバッチファイル(mput=アップロード)

次は、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でファイル転送を行う簡単なバッチファイル(mget=ダウンロード)

次は、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
続行するには何かキーを押してください . . .

 

FTPコマンドの実行時にエラーになる場合

場合があります。

⇒詳しくは「【Windows】FTPコマンドがエラーで実行できない場合(Windows Firewall)」のページを参照ください。

 

以上です。