ファイルを他のサーバに送るときはファイル転送プロトコルのFTPを利用します。
FTPコマンドは便利ですが、毎回パスワードなど入力を求められるので面倒です。
この記事では、
- FTPコマンドを繰り返し実行する
- FTPコマンドをバッチファイルで実行したい
そんな方に読んでもらいたいです。
FTPをバッチで実行する
ではさっそくFTPをバッチで実行してみます。
転送するファイルバッチファイルと同じフォルダにある「abc.txt」を送信します。
送信先のFTPサーバ(192.168.50.217)の「C:\FTP」は何もありません。
FTPファイル送信.batをダブルクリックで実行します。
C:\bat\ftp>echo off ftp> open 192.168.50.217 21 192.168.50.217 に接続しました。 220 Microsoft FTP Service 200 OPTS UTF8 command successful - UTF8 encoding now ON. ユーザー (192.168.50.217:(none)): 331 Password required 230 User logged in. ftp> lcd ローカル ディレクトリは現在 C:\bat\ftp です。 ftp> ls 200 PORT command successful. 125 Data connection already open; Transfer starting. 226 Transfer complete. ftp> mput abc.txt 200 PORT command successful. 125 Data connection already open; Transfer starting. 226 Transfer complete. ftp> ls 200 PORT command successful. 125 Data connection already open; Transfer starting. abc.txt 226 Transfer complete. ftp: 12 バイトが受信されました 0.00秒 12000.00KB/秒。 ftp> quit 221 Goodbye. 続行するには何かキーを押してください . . .
赤線の部分でファイルの送信が実行されました。
青線の部分で送信先のディレクトリにファイルが表示されているのが確認できます。
送信先のフォルダでもファイルabc.txtを確認できます。
例で実行したのはファイルの送信でしたが、ファイルを取得も同じようにワンクリックでできます。
次にバッチファイルの作り方を説明します。
コピペで作成できるので初めての方でも大丈夫です。
バッチファイルの内容
バッチファイルはファイル送信用とファイル取得用の2つあります。
どちらもコードをコピーしたらメモ帳に貼り付けて「FTPファイル送信.bat」や「FTPファイル取得.bat」などで保存してください。
※ファイル名を「ftp.bat」にすると誤動作するので注意してください。
ファイルを送信するバッチのコード
echo off
set TMPFILE=ftpdetail.txt
rem FTPサーバ接続情報※空欄だと入力を求められます。
set SERVER=192.168.50.217
set USER=user
set PASS=1
set PUTFILE=abc.txt
rem バッチファイルのフォルダとは別のフォルダを使用する場合に入力
rem 例:set LCD=C:\FTP
set LCD=
rem 情報取得
if "%SERVER%" == "" (
set /P SERVER="FTPサーバのIPを入力してください: "
)
if "%USER%" == "" (
set /P USER="ユーザ名を入力してください: "
)
if "%PASS%" == "" (
set /P PASS="パスワードを入力してください: "
)
if "%PUTFILE%" == "" (
set /P PUTFILE="送るファイル名を入力してください[abc.txt *.txt]: "
)
rem FTPコマンド実行用一時ファイル作成
(echo open %SERVER% 21) > %TMPFILE%
(echo %USER%) >> %TMPFILE%
(echo %PASS%) >> %TMPFILE%
(echo lcd %LCD%) >> %TMPFILE%
(echo ls) >> %TMPFILE%
(echo mput %PUTFILE%) >> %TMPFILE%
(echo ls) >> %TMPFILE%
(echo quit) >> %TMPFILE%
rem FTPコマンド実行
FTP -i -s:%TMPFILE%
rem 一時ファイル作成
DEL %TMPFILE%
pause
ファイルを取得するバッチのコード
echo off
set TMPFILE=ftpdetail.txt
rem FTPサーバ接続情報※空欄だと入力を求められます。
set SERVER=192.168.50.217
set USER=user
set PASS=
set GETFILE=
rem バッチファイルのフォルダとは別のフォルダを使用する場合に入力
rem 例:set LCD=C:\FTP
set LCD=
rem 情報取得
if "%SERVER%" == "" (
set /P SERVER="FTPサーバのIPを入力してください: "
)
if "%USER%" == "" (
set /P USER="ユーザ名を入力してください: "
)
if "%PASS%" == "" (
set /P PASS="パスワードを入力してください: "
)
if "%GETFILE%" == "" (
set /P GETFILE="取得するファイル名を入力してください[abc.txt *.txt]: "
)
rem FTPコマンド実行用一時ファイル作成
(echo open %SERVER% 21) > %TMPFILE%
(echo %USER%) >> %TMPFILE%
(echo %PASS%) >> %TMPFILE%
(echo lcd %LCD%) >> %TMPFILE%
(echo !dir) >> %TMPFILE%
(echo mget %GETFILE%) >> %TMPFILE%
(echo !dir) >> %TMPFILE%
(echo quit) >> %TMPFILE%
rem FTPコマンド実行
FTP -i -s:%TMPFILE%
rem 一時ファイル作成
DEL %TMPFILE%
pause
どちらもコードをコピーしたらメモ帳に貼り付けて「FTPファイル送信.bat」や「FTPファイル取得.bat」などで保存してください。
※ファイル名を「ftp.bat」にすると誤動作するので注意してください。
バッチのカスタマイズ方法について説明します。
コピペした状態では正しい接続先になっていないので使う環境に合わせて修正してください。
set SERVER=192.168.50.217 ←FTPサーバのIPアドレスを入力します。 set USER=user ←FTPサーバに接続するユーザ名を入力します。 set PASS=1 ←FTPサーバに接続するパスワードを入力します。 set PUTFILE=abc.txt ←転送するファイル名を入力します。
コピーしてもらったコードには4か所全てに情報が入っていますが、パスワードなど保存したくない場合は空欄にしてください。
また、ファイル名もその都度指定したい場合も空欄にします。
set SERVER=192.168.50.217 set USER=user set PASS=1 ←パスワードを見られたくないなら消してもいい。 set PUTFILE=abc.txt ←毎回ファイルを変えたい場合は空欄にする。
空欄にした項目はバッチファイルを実行した時に入力を求められるので、決まった情報のみ書いておけばいいです。
IPアドレスとユーザ名が決まっている場合はこんな感じにします。
set SERVER=192.168.50.217 set USER=user set PASS= set PUTFILE=
空欄についてはこのように聞かれます。
パスワードを入力した後は、ファイル名を聞かれます。
C:\bat\ftp>echo off パスワードを入力してください: 1 ←入力したパスワード 送るファイル名を入力してください[abc.txt *.txt]: abc.txt ←入力したファイル名
このように空欄にした項目だけバッチ実行時に入力を求められます。
入力後は例と同じようにファイル転送が行われます。
この設定はファイル送信、ファイル取得どちらも同じです。
複数のファイルを指定したいときは「*」を使う事ができます。
全ての「.txt」ファイルを対象にしたい場合は、下記のように入力します。
*.txt
バッチファイルはどうやって覚える?
バッチファイルはコマンドプロンプトで使えるコマンドを複数組み合わせる事ができます。最初はコピペの代わりにバッチファイルを作成すると思いますが、やりたい事が複雑になると都度ネットで調べたりして時間がかかってしまいます。
基礎から学ぶとやりたい事をどうかけばバッチファイルに落とし込めるかイメージが出来るようになります。
無料でやるならネット上の学習サイトを参考にするといいです。
こちらはバッチファイルの基礎から説明している無料のWEBサイトになります。
>>基礎から学べるWEBサイトを見てみる
基礎は分かったけど実際にどんなことができるのか、応用の幅を広げたいという方には、こちらの本をおすすめします。
プログラムのサンプルコードがあるので出来ることを見つけやすいです。
また、他のプログラムとは異なりかなりクセが強いのがバッチですが、回避用コードもあるのでエラーに強いコードを書けるようになります。
まとめ
今回はFTPコマンドをバッチで実行する方法を説明しました。
事前に接続情報を全て入力しておくことでワンクリックで実行もできます。
またパスワードを都度入力するように変更もできるのでセキュリティを考慮した使い方も可能です。
このFTPバッチを活用して、FTPコマンドに慣れない方でも使いやすい環境にしていきましょう。
Pingを自動実行するバッチも作成しました。