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

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

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

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

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

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