ネットショップ運営していると大量の画像ファイルをサーバーにアップロードしないといけないときってありますよね?
今使えるのかどうかわからないんですけど^^; もしかしたら参考にはなるかもしれませんので掲載しておきます。
繰り返し画像を圧縮してFTPするバッチファイル本体はこんな感じで
@echo off rem /*------------------------------------------------------------------------- rem /* uploadyahoo.bat -- copyright (c) 2015 centlex. all rights reserved rem /*------------------------------------------------------------------------- rem /* rem /* 画像のあるフォルダに移動してフォルダ内の画像を圧縮して */ rem /* rem /* ftpyahoo.txtに記載のFTP情報でサーバーに接続して圧縮ファイルをアップロードするバッチファイル */ rem /* rem /*---------------------------------------------------------- rem ここに各画像フォルダが収容されているフォルダを指定します(環境によって変更が必要) set topdir=images rem アップロードする際の圧縮ファイルの名前 set zipfile=img.zip set curdir=%~dp0 echo %curdir% rem 画像各フォルダの1つ上に移動 cd %topdir% for /D %%a in (*) do ( rem 画像フォルダに移動 echo "画像フォルダ:" echo %%a cd %%a rem 入っている画像をまとめて圧縮する rem 7-Zip\7z.exe"へのパスは7z.exeを右クリック→プロパティ、を開く rem 表示される「リンク先」の内容 "C:\Program Files (x86)\7-Zip\7z.exe" a "%curdir%\img.zip" *.jpg rem 圧縮したzipファイルをFTPする echo "%curdir%ftpinfo.txt" ftp -s:"%curdir%ftpyahoo.txt" rem 圧縮したZIPファイルを削除する del "%curdir%\img.zip" timeout /t 600 cd .. rem 戻る ) echo "完了しました"
FTP接続情報を書いたテキストファイルを用意します
open ftp.castle.yahoofs.jp store-ストアアカウント FTPパスワード bin lcd "画像フォルダアドレス" put img.zip bye
各ファイルの設置方法、画像フォルダの配置など
【必須条件】
(1) 7-ZipをC:\にインストールしておきます(7zipはこちら)
(2) ftpyahoo.txt にFTP接続先情報を設定します
1行目の “open” の後ろにサーバー名
2行目にストアアカウント名
3行目にヤフーから通知されたFTPパスワード
【バッチファイルの設置場所】
アップロードしたい画像が入っている各フォルダの1つ上の階層に置いてください */
(ftpcmdもこのバッチファイルと同じ階層に置いてください)
設置の例:
デスクトップ\ヤフーショップ\uploadyahoo.bat デスクトップ\ヤフーショップ\ftpyahoo.txt デスクトップ\ヤフーショップ\images\画像が収容されている各フォルダ(複数)
※上記の構成で “images”を最初の移動先フォルダに設定します(バッチファイル”set topdir=images”のところ)
非プログラマーの人向けにバッチファイルの書き方について説明しますと・・・
命令文はだいたい次のような書き方をします。
コマンド名 引数
あるいは
コマンド名 オプション 引数1 引数2
コマンドやオプション、引数の間はかならず半角スペースが必要です。
引数の中にスペースが含まれている場合には
“C:\Program Files (x86)\7-Zip\7z.exe”
のように”(ダブルクオート)で囲む必要もあります。
remというのはその後に書く内容がバッチファイル内でコメント(注釈)として解釈され、動作には影響しません。
setというのは変数に値を入れるコマンドです。
cdは与えられた引数のディレクトリに移動するコマンドです。
このバッチファイルのキモの部分は
for /D %%a in (*) do (
・・・
)
のところで、topdir(imagesフォルダ)下にある各フォルダを変数aに繰り返し入れて、”cd %%a”で各フォルダに移動して7z.exeでフォルダ内にあるjpgファイル全部を圧縮するという部分です。
FTPが終わったら”cd ..”で1つ上の階層に戻るようにして、また繰り返し”cd %%a”で次のフォルダに移動して同じ処理をしています。