中堅プログラマーの備忘録

忘れっぽくなってきたので備忘録として・・・

【windows】batファイルからFTPコマンドでファイル転送し、結果を取得する

FTPのアプリケーションをわざわざ作成するよりも
簡単なものなら、【batファイル】と【コマンドファイル】を作成するだけで可能です。

基本的には【ftp -s:コマンドファイル名】を実行します。
コマンドファイル名のファイルにはftpコマンドの一連の流れを記述します。

下記にサンプルを記述します。

REM 自分のディレクトリへ移動
cd /d %~dp0

ftp -s:upload.txt

exit


open 192.168.0.106
【id】
【pass】
bin
get test.txt
bye


結果

C:\Users\****>ftp
ftp> open 192.168.0.106
192.168.0.106に接続しました。
220 *** FTP Server Ver.1.0
530 Please log in with USER and PASS first.
ユーザー (192.168.0.106:(none)): 【id】
331 Password required for 【id】
パスワード:【pass】
230 Logged on
ftp> bin
200 Type set to I
ftp> get test.txt
200 Port command successful
150 Opening data channel for file transfer.
226 Transfer OK
ftp: 54 バイトが受信されました 0.00秒 13.50KB/秒。
ftp> bye
221 Goodbye
C:\Users\****>

といった感じで割と簡単にftpが実現できました。


但し問題点として、成功したか失敗したかの判定が出来ないことです。
これについてはftpのログを解析して自力でエラー処理するしかないっぽい。
てことで下記のように変更してみました。


REM 自分のディレクトリへ移動
cd /d %~dp0

ftp -s:upload.txt >ftp.log

find "接続されていません。" ftp.log >NUL && exit /b 1

exit /b 0


これで接続時にエラーが発生したら戻り値として【1】が返されます。
【接続されていません。】以外にエラー内容を設定すれば
どんなエラーが起きているか判断することが可能になります。