バッチファイルでのFTPアップロード

バッチファイルでFTPに接続して何かをする場合、
バッチファイルとは別に、接続先や作業内容などを記述したコマンドファイルが必要になる。
それを、バッチファイルから呼び出す形。

とはいえ、このコマンドファイルも実行するバッチファイル内で作成してしまい、
それを保存、実行、削除、してしまえば、ファイルが一つで動作できるようになる。

  1. コマンドファイルを、tmpファイルとしてまず作成し、
  2. それをバッチで実行し、
  3. tmpファイルを削除

コマンドファイルは中身がテキストであればなんでも大丈夫なよう。

実行するコマンドファイルは一つだけれど、
便宜上、3つのファイルを作成し、それらを合体させて一つのファイルにするフローにした。

作成されるファイル

  1. ftp_login.tmp
  2. ftp_up.tmp
  3. ftp_loguot.tmp
  4. ftp_bat.tmp

1) ftpのログイン情報

open [サーバー名]
[ユーザー名]
[パスワード]
bin
prompt

bin以降に処理を書く。
prompt、は複数のファイルをアップロードやダウンロードする際に、確認を求められるのでそれを回避するために入れている。

2) アップロード情報

cd /home/hoge
mput *.html

アップするディレクトに移動して、アップロード。
putがアップロード、で、mをつけると複数ファイルの処理になる。
(mをつけた場合のみ確認が出るので、それを出さないためにpromptを入れている)

3) ログアウト情報

bye
close

bye : FTP終了
close : 接続を切断

4) 1〜3の内容をまとめて一つにする。

実行方法

ftp -s:ftp_bat.tmp

ログを残す場合は以下。

ftp -s:ftp_bat.tmp>>upload.log

今回調べた(全然知らなかったので)コマンドは以下。

コマンド 説明
@echo off 以降の実行するコマンドを画面に表示させないようにする
set 変数を定義
rem コメント
% 変数を参照 %file%%TEMP%など
%cd% 現在のディレクトリ
:[ラベル] ラベルを設定
goto [ラベル] 指定したラベルへ移動
> 左側に書いたものを右側のファイルへ書き込む(新規 もしくは 上書き)
>> 左側に書いたものを右側のファイルへ追記
type テキストファイルの中身をそのまま画面に出力
cscript 指定したスクリプトの実行

ファイルへの書き込み方法は、以下。

//直接記入
echo hoge> test.txt
--内容
hoge
//直接追記
echo fuga>> test.txt
--内容
hoge
fuga
//ファイル内容を記入
type test.txt> sample.txt
--内容
hoge
fuga
//ファイル内容を追記
type test.txt>> sample.txt
--内容
hoge
fuga
hoge
fuga

全体は以下のような形。
指定したサーバーに、同階層にあるhtml拡張子のファイルをアップロードする。
ログは、同階層に、upload.logに記録。

@echo off
set path_local=%cd%
set path_remote=/home/uploadset
server=[ホスト名]
set user=[ユーザー名]
set password=[パスワード]

set ftplogin=ftp_login.tmp
set ftplogout=ftp_logout.tmp
set ftpupload=ftp_up.tmp
set ftpbat=ftp_bat.tmp

echo %user%> %ftplogin%
echo %password%>> %ftplogin%
echo bin>> %ftplogin%
echo prompt>> %ftplogin%

echo cd %path_remote%>> %ftpupload%
echo mput *.html>> %ftpupload%

echo bye> %ftplogout%
echo close>> %ftplogout%

echo open %server%>%ftpbat%
type %ftplogin%>>%ftpbat%
type %ftpupload%>>%ftpbat%
type %ftplogout%>>%ftpbat%

ftp -s:%ftpbat% >upload.log

del %ftplogin%
del %ftplogout%
del %ftpupload%
del %ftpbat%
   このエントリーをはてなブックマークに追加