ヤフーショッピングに複数のフォルダに置いてある画像を繰り返し圧縮してアップロードするバッチファイル

ネットショップ運営していると大量の画像ファイルをサーバーにアップロードしないといけないときってありますよね?

今使えるのかどうかわからないんですけど^^; もしかしたら参考にはなるかもしれませんので掲載しておきます。

繰り返し画像を圧縮して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”で次のフォルダに移動して同じ処理をしています。