プログラミング言語や環境設定を中心としたパソコン関連の技術メモです。
主にシステム開発中に調べたことをメモしています。TIPS的な位置付けで、気が向いたときにちまちま更新していきます。
Windows、バッチファイル(.bat)でFTP処理実行
sitemap.xmlをローカル環境で作成して
それをFTPでサーバに上げるってな作業を
自分ところのWebサイトでやっているのですが、
いちいちFTPクライアントを起動するのが面倒でしてね。
バッチファイルにしちまうかーってのがきっかけです。

ほんでWindowsのバッチファイルでFTPを実行する方法ですが、
多分これから書くのが一番簡単だと思います。

まずFTPで打つコマンドをべちべち書いたテキストファイルを用意します。
中身はこんな感じφ(--)

open [接続ホスト]
[ユーザ名]
[パスワード]

bin(もしくはasc)

[何かやりたい処理]

disconnect
bye 

ほんで、バッチファイルではftpコマンドを使って
作成したテキストファイルを読み込みます。
コマンドはこんな感じφ(--)

ftp -s:[テキストファイル名]

これだけ\(--)/

なのですが、いまいちイメージできないと思いますので
私が実際に作成したバッチファイルを載せておきますね。

こんな感じですφ(--)

■ftp.txt
open [接続ホスト]
[ユーザ名]
[パスワード]
bin
cd ./public_html
prompt
mput sitemap.xml
prompt
disconnect
bye 

■wa3_ftp.bat
@ECHO OFF
@REM *********************************************************
@REM * sitemap.xmlを送信
@REM * 
@REM *********************************************************

ECHO %time%

SET FTP_TXT_DIR=C:\ほげほげ\sitemap\

SET FTP_TXT=ftp.txt

SET TARGET=sitemap.xml
SET DO_ACTION=送信
SET MSG=%TARGET%を%DO_ACTION%しますか(y/n)?

SET /P pushKey=%MSG%" : %pushKey%"

IF "%pushKey%" == "y" (
    REM OK
) ELSE IF "%pushKey%"=="Y" ( 
    REM OK
) ELSE (
    GOTO END
)

CD %FTP_TXT_DIR%

ftp -s:%FTP_TXT%

IF "%ERRORLEVEL%" == "0" (
    GOTO OK
) ELSE (
    GOTO ERR
)

:ERR
    SET ERR_CD=%ERRORLEVEL%
    ECHO ** %TARGET%%DO_ACTION% 異常終了! ERRORLEVEL= %ERR_CD%
    GOTO END

:OK
    ECHO ** %TARGET%%DO_ACTION% 正常終了! 
    GOTO END

:END
    ECHO %time%
    PAUSE

ここで一つ大事な注意点があります(--)b

バッチファイルの名前は絶対に「ftp.bat」にしないでください。

バッチファイルの名前を「ftp.bat」にすると

ftp -s:[テキストファイル名]

のコマンド実行時に再帰的に自分を呼び出して無限ループします。
ご注意ください。

完了\(--)/
スポンサーリンク
 
このエントリーをはてなブックマークに追加 

category:コマンド/バッチ  thema:パソコンな日々 - genre:コンピュータ  Posted by ササキマコト 

  関連記事