トップ  > Windows  > ユーティリティ  > 記事

No.1399 batファイルによるFTP自動実行(Windowsタスク)

Windowsのタスクを使ってFTPを自動実行する方法を紹介します。 レンタルサーバーや自宅LAN上のPCにあるファイルのバックアップログのバックアップ自動化することができるようになります。管理人の場合ははレンタルHPの アクセスログを自動取得するのに使ったりしてます。

 まず、タスクに追加するためにはバッチファイル(.bat)を作ります。 バッチファイルとは何かというと、WindowsのDOSプロンプト用のコマンドをテキストファイルにまとめて書いたもので、 コマンドを一挙に実行するためのファイルです。 バッチファイルにFTPを実行するよう書いておき、Windowsのタスクとして 自動実行するよう設定すれば、FTPの一連の動作を自動化することができます。

 バッチファイルでFTPを実行するためには「バッチファイル」 と「コマンドファイル」が必要です。以下のファイルをテキストエディタで作成し、 同じフォルダに置いてください。(「xrea.com」のログ取得を例としています。)

<auto_ftp.bat>(バッチファイル)

ftp -s:ftpcmd.txt>>ftp.log

<ftpcmd.txt>(コマンドファイル)

open s○○.xrea.com
ログインユーザー名
パスワード
asc
cd /log
lcd D:\Web_page\log
get (ドメイン名).log
disconnect
bye

 設定値は各自の状況に合わせて書き換えてください。書き換えたら auto_ftp.batをダブルクリックすると、指定したホストのディレクトリから ファイルをダウンロードすることができます。FTPコマンドが上手くいかない場合は DOSプロンプトを立ち上げて、コマンドファイルの内容を1行ずつ手で打ち込んでみると どこに誤りがあるかわかります。また、バッチファイル名を"ftp.bat"とすると 正常に動作せず、無限ループに陥ることがあるので気をつけてください。

 FTPコマンドの詳細は以下の通りです。

接続
open FTP先サーバ(またはIP)
open で接続したらユーザ名とパスワードを入力してログインします。
アノニマス FTP サーバの場合は、ユーザ名は anonymous、パスワードはあなたの E-mail を入力します。
ディレクトリ位置確認
pwd
FTP 先のディレクトリ位置が、絶対パス名で表示されます。
ファイル一覧
dir
FTP 先ディレクトリ内のファイル一覧が表示されます。
ディレクトリ位置変更
cd ディレクトリ名
FTP 先の作業ディレクトリ位置を変更します。
ローカル側ディレクトリ位置変更
lcd ディレクトリ名
ローカル側( ftp コマンドを実行した側)のディレクトリ位置を変更します。
ローカル側ディレクトリ位置確認
lcd
lcd だけを入力するとローカル側の現在の絶対パス位置が表示されます。
Windows 系パソコンの MS-DOS プロンプトから ftp している場合は、C:\WINDOWS\SYSTEM のような書式になります。
アスキーモード
asc または ascii
FTP によるファイル転送をテキストモード(アスキーモード)にセットします。HTMLファイルなどの転送に用います。
バイナリモード
bin または binary
FTP によるファイル転送をバイナリモードにセットします。画像ファイルなどの転送に用います。
ダウンロード
get ファイル名
指定ファイルをローカル側にダウンロードします。
このときファイルはローカル側の現在のパス位置( lcd で表示される場所)に保存されます。
アップロード
put ファイル名
指定ファイルをローカル側からアップロードします。
このときファイルは FTP 先の現在のパス位置( pwd で表示される場所)に保存されます。
複数ファイルのダウンロード
mget ファイル名1 ファイル名2
複数のファイルを指定してローカル側にダウンロードできます。アスタリスク * を使って mget *.html のような記述も可能。
ファイル毎に確認の入力を聞いてきますので y(yes) または n(no) を入力します。
複数ファイルのアップロード
mput ファイル名1 ファイル名2
複数のファイルを指定してローカル側からアップロードできます。アスタリスク * を使って mput *.gif のような記述も可能。
ファイル毎に確認の入力を聞いてきますので y(yes) または n(no) を入力します。
インタラクティブモード解除
prompt
mget や mput を使用するときファイル毎の確認入力が不要になります。再度 prompt を入力するとインタラクティブモード ON に戻ります。
ディレクトリ作成
mkdir ディレクトリ名
FTP 先に新しいディレクトリを作成します。
(ユーザ権限によってはできない場合があります。)
ディレクトリ削除
rmdir ディレクトリ名
FTP 先の中身が空のディレクトリを削除します。
(ユーザ権限によってはできない場合があります。)
ファイル名変更
rename ファイル名 新ファイル名
FTP 先の既存ファイル名やディレクトリ名を変更します。
(ユーザ権限によってはできない場合があります。)
ファイル削除
delete ファイル名
FTP 先のファイルを削除します。
(ユーザ権限によってはできない場合があります。)
複数ファイルの削除
mdelete ファイル名1 ファイル名2
FTP 先の複数のファイルを削除します。
(ユーザ権限によってはできない場合があります。)
パーミッション変更
quote site chmod *** ファイル名
パーミッション(属性)の変更を行います。
サーバ設定やユーザ権限によっては使用できない場合があります。
ヘルプ
help
使用可能な FTP コマンドの一覧が表示されます。コマンド毎の説明は help に続けてコマンドを入力。
切断
close
FTP 先との接続を切断します。
終了
quit または bye
これで FTP 終了

 実行できることが確認できたら、次はWindowsのタスクに追加します。

 [スタート]→[設定]→[コントロールパネル]→[タスク]を開き、 [スケジュールされたタスクの追加]を起動する。実行するプログラム選択で "auto_ftp.bat"を指定し、実行する単位や時間を指定すればFTP自動化完了です。

 さらに、ダウンロード後にファイル名変更をしたい場合は、バッチファイルに ファイル名変更のコマンドを追加すると良いでしょう。

<auto_ftp.bat>(バッチファイル)

ftp -s:ftpcmd.txt>>ftp.log
ren 元ファイル名 新ファイル名

 また、複雑な文字列操作が必要な場合、バッチで実現するのは難しいので、 Perlスクリプトによって処理を実行することもできます。 (Active Perlなどを入れている必要があります。) Active Perlのインストールについては『Perlモジュール(Active Perl)のインストール』 をご覧ください。

 以下の例では、ファイル名に昨日の日付("041030"等)を追加しています。

<auto_ftp.bat>(バッチファイル)

ftp -s:ftpcmd.txt>>ftp.log
perl rename.pl

<rename.pl>(Perlスクリプト)

($day,$month,$year) = (localtime(time-60*60*24))[3..5]; #昨日のログのため
$year -= 100; #下2桁のみにする
$month++;
$ymd = sprintf("%02d%02d%02d", $year, $month, $day); #年月日を2桁ずつで表現

rename("○○.log", "○○_$ymd.log"); #ファイル名に日付を追加

こちらは管理人のおすすめです。もしよかったらご覧ください。

引用元

更新:2009/08/29 05:24 カテゴリ: Windows  > ユーティリティ ▲トップ

Python

フロントエンド開発

Docker

AWS

nginx

Node.JS

Linux

web開発

サーバ管理

GCP

svn・git

ソース・開発

プロマネ

HTML・CSS

JavaScript

Alexa

webサービス運用

webサービス

Mac

MySQL

PHP

FuelPHP

ツール, ライブラリ

ビジネス

テンプレート

プレゼン

マネタイズ

負荷・チューニング

Windows

メール

メール・手紙文例

CodeIgniter

オブジェクト指向

UI・フロントエンド

cloud

マークアップ・テキスト

Flash

デザイン

DBその他

Facebook develop

Ruby

PostgreSQL

ユーティリティ・ソフト

Firefox

ハードウェア

Google

symfony

OpenPNE全般

OpenPNE2

Hack(賢コツ)

OpenPNE3

リンク

個人開発

その他

未確認

KVS

ubuntu

Android

負荷試験

オープンソース

社会

便利ツール

マネー

Twig

食品宅配

WEB設計

オーディオ

一般常識

アプリ開発

サイトマップ

うずら技術ブログ

たませんSNS

rss2.0