; cocoup_all.ahk (ディレクトリツリー丸投げ版) ; ▽ 概要 ; tsupo(H.Tsujimura)さん作の uploadFile(ここあっぷるコマンドライン版プログラム1.33a)を ; 使用して、ココログにローカルのファイルをディレクトリごと丸投げします。 ; ディレクトリツリー構造はそのまま保持されます。 ; AutoHotkeyインストール時に、"Enable drag & drop onto scripts" を有効にしないと ; 動作しません(windows95/98では無効)。 ; ▽ 使い方 ; このファイルをuploadFileと同じ場所に置き、下記の各種設定でアカウント・パスワード等を正しく ; 設定してください。 ; 設定してこのファイルを上書きしたら、ahkアイコンにローカルのフォルダをドロップすれば ; アップロード先ディレクトリの入力ダイアログを開きます。 ; このとき、parent_dirに設定したディレクトリ下のフォルダをドロップした場合は、入力ボックスに ; アップロード先ディレクトリが自動で書き込まれています。特に変更しなければそのままOKボタンを ; 押してください(parent_dirをドロップした場合は無記入の状態になります)。 ; ; uploadFile作者さんの説明と微妙に異なりますが、相対パスは“ブログ名から”の相対パスです。 ; ※ [ ../ ] では上位ディレクトリにアップすることを意味するのでアップロードできません。 ; 例1) http://.cocolog-nifty.com/blog 以下にC:\web\imageをアップロードする場合 ; --> [ 無記入のままOK ] --> URL : http://.cocolog-nifty.com/blog/image/*.* ; 例2) http://.cocolog-nifty.com/blog/image にC:\web\image\svgをアップロードする場合 ; --> [ ./image ] --> URL : http://.cocolog-nifty.com/blog/image/svg/*.* ; 最終確認でOKボタンを押し、コンソールに「アップロードしたファイルの url = http://〜」 ; のように出ればアップロードが始まっています。 ; アップロードを中止するにはバッチの停止コマンド(コンソールで Ctrl+C)で停止できます。 ; ▽ 仕様 ; ココログフリー版でしか動作テストしてません。 ; このスクリプトはデスクトップにバッチファイルを作成し、最終確認で Go されればuploadFileを ; 呼び出してアップロードを行います(中止した場合は手動でバッチを実行)。 ; 容量チェックやパスワードチェックなどは行いませんので、サーバ上の空き容量やパス・アップロード ; 先ディレクトリの入力ミスには十分ご注意ください。 ; ディレクトリは存在しなければ作成されますが、ココログの仕様により、同一ディレクトリに同名の ; 既存のファイルが存在した場合、上書きされずにファイル名に連番が付きます。 ; その他、制限事項はココログのヘルプやuploadFile添付のテキストを参照してください。 ; 複数のディレクトリをドロップしたり、ファイルをドロップしてアップロードする事はできません。 ; 確認のためブラウザを起動してファイルマネージャを開いておく事をお勧めしますが、ブラウザで ; ココログにログインしなくてもアップロードは可能です。 ; ログファイルの書き出しはしません。アップロード後のURLはコンソールかファイルマネージャで ; 確認してください。 #NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. BlockInput, Send ; 各種設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; このahkファイルは uploadFile.exe と同じディレクトリに置いてください。 acount = passwd = blog_id = cocolog_type = -tF parent_dir = default_dir = ./temp f_type = *.css`;*.htm`;*.png`;*.pcx`;*.svg`;*.zip`;*.txt`;*.jpg`;*.gif`;*.pdf`;*.js`;*.lzh f_list = %A_Temp%\f_list.txt up_bat = %A_Desktop%\cocolog_upload.bat ; 各変数の説明 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; acount = アカウント (必須) ; passwd = パスワード (必須) ; blog_id = ブログID (状況に応じて) ; ※ 同一アカウントで管理しているココログが1つならば無記入のまま変更しないでください。 ; ※ 同一アカウントでココログを2つ以上管理されている方は blog_id = hoge のように記入します。 ; cocolog_type = ココログのタイプ (必須) ; ※ ココログベーシック、ココログプラス、ココログプロ)の場合は Fを消してください(= -t)。 ; parent_dir = ローカルの親ディレクトリ (必須) ; ※ D:\webpage\cocologのようにディレクトリパスをフルパスで記述してください。 ; ※ アップロード先ディレクトリは、parent_dir を基準にして相対パスでダイアログに表示されます。 ;   つまり、ここで設定したディレクトリがサーバー上の にあたります。 ; 例) parent_dir = D:\webpage\cocolog && D:\webpage\cocolog\image をアップロード ; --> URL = http://.cocolog-nifty.com//image/2007/summer/hoge.jpgなど ; default_dir = デフォルトのアップロード先 (任意) ; ※ parent_dir に属さないディレクトリをドロップしたときに、初期状態でダイアログに記入 ;   されているアップロードディレクトリです。 ;   parent_dir に属さない場合に限り、./%default_dir%/フォルダ名といった形で表示されます。 ; 例) default_dir = ./image --> D:\DCIM をアップロード ; --> URL = http://.cocolog-nifty.com//image/DCIM/2007/summer/hoge.jpg ; f_type = アップロードするファイルタイプ (任意) ; ※ ここに列挙されている拡張子のファイルのみ、アップロードの対象になります。 ;   ワイルドカードの仕様は cmd.exe と同じです。必要に応じて追加/削除してください。 ;   セパレータのセミコロンの前には「`」が必須です。*.htm`;*.htmlのような指定をすると、htmlの ;   ファイルが重複してアップロードされてしまうのでご注意ください。 ; f_list = アップロードするファイルの一覧 (一時ファイル) (任意) ; ※ このファイルは、既存のファイルが存在すればスクリプト開始直後に削除され、新規で作成します。 ;   なお、%f_list%はスクリプト終了時に削除されます。ログの書き出しには対応していません。 ; up_bat = バッチファイルを置く場所 (任意) ; ※ このスクリプトで作成されるバッチを置く場所。フルパスで指定しても構いません。 ;   同名のファイルが存在する場合、既存のファイルをゴミ箱に移動してから新規作成されます。 ;   デスクトップの場所(%A_Desktop%)はTweakUIによるデスクトップの場所変更に対応しています。 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; if ((acount = "") || (passwd = "") || (parent_dir = "")) { MsgBox, 16, error, アカウント または パスワード または ローカルの親ディレクトリ が無記入です`n必須項目を確認してください。 ;Run, %A_ProgramFiles%\TeraPad\TeraPad /hsp /jl=56 "%A_ScriptFullPath%" Run, Edit "%A_ScriptFullPath%" return } IfNotExist, %A_ScriptDir%\uploadFile.exe { MsgBox,16,error, uploadFile.exe が見つかりません。`nこのahkファイルは uploadFile.exe と同じディレクトリに置いてください。 return } if ((FileExist(up_bat)) || (FileExist(f_list))) { FileRecycle, %up_bat% FileRecycle, %f_list% } StringReplace, sub_type, f_type, `;, `,, 1 StringReplace, sub_type, sub_type, *, , 1 var = %1% if var contains %sub_type% { MsgBox, 16, error, ディレクトリ(フォルダ)をドロップしてください。`nファイルはドロップできません。 return } if %0% = 0 { MsgBox, 16, error, ダブルクリックしても何もアップロードしません。`nディレクトリ(フォルダ)をドロップしてください。 return } filespec = %1% SplitPath, filespec, bottom_name, dir StringGetPos, pos, bottom_name, ~, R if pos = 6 { StringTrimLeft, num, bottom_name, 7 StringTrimRight, name, bottom_name, 3 Run, cmd WinWait, ahk_class ConsoleWindowClass Send, cd /d %dir%`ndir /a:d /b %name%* >%A_Temp%\dir_list.txt`nEXIT`n Sleep, 200 fileReadLine, line, %A_Temp%\dir_list.txt, %num% DirLongPath = %dir%\%line% FileDelete, %A_Temp%\dir_list.txt } else{ DirLongPath = %1% SplitPath, DirLongPath, line } if InStr(DirLongPath, parent_dir, CaseSensitive=ture, StartingPos=0) <> 0 { if (DirLongPath == parent_dir) { sub_dir = } else{ StringReplace, sub_dir, DirLongPath, %parent_dir%\, , 1 StringReplace, sub_dir, sub_dir, \, /, 1 sub_dir = ./%sub_dir% } } else{ sub_dir = %default_dir%/%line% } InputBox, up_dir, , upload先の親ディレクトリを入力してください`n(http://.cocolog-nifty.com/から見た相対パス)`n`n例) HOMEDIR = (無記入)`n  //image/thumbs = ./image/thumbs, , 420, 190, , , , ,%sub_dir% if ErrorLevel <> 0 return Run, cmd WinWait, ahk_class ConsoleWindowClass Send, CD /d %1%`nDIR /s /b %f_type% >%f_list%`nEXIT`n FileAppend, @ECHO OFF`nSET PATH=%A_ScriptDir%`nCD /d %1%`n, %up_bat% Loop { FileRead, all_text, %f_list% if ErrorLevel <> 0 { Sleep, 1000 continue } else{ Sleep, 200 break } } if (blog_id = "") { command_1 = uploadFile -u %acount% -P %passwd% -f } else{ command_1 = uploadFile -u %acount% -P %passwd% -b %blog_id% -f } StringLen, length, filespec length := ++length Loop, Read, %f_list%, %up_bat% { StringTrimLeft, up_file, A_LoopReadLine, length StringGetPos, pos, up_file, %A_SPACE% if pos >= 0 up_file = "%up_file%" StringGetPos, pos, up_file, \, R if pos < 0 { if (up_dir = "") { FileAppend, %command_1% %up_file% %cocolog_type%`n } else{ FileAppend, %command_1% %up_file% -d %up_dir% %cocolog_type%`n } } else{ StringMid, sub_dir, up_file, 1, pos StringGetPos, pos, sub_dir, " if pos >=0 StringReplace, sub_dir, sub_dir, ", , All StringReplace, sub_dir, sub_dir, \, /, All if (up_dir = "") { FileAppend, %command_1% %up_file% -d ./%sub_dir% %cocolog_type%`n } else{ FileAppend, %command_1% %up_file% -d %up_dir%/%sub_dir% %cocolog_type%`n } } count = %A_Index% } Sleep, 200 FileAppend, pause, %up_bat% ;Run, %A_ProgramFiles%\TeraPad\TeraPad "%up_bat%" ;WinWait, %up_bat% - TeraPad Run, Notepad "%up_bat%" SplitPath, up_bat, bat_name WinWait, %bat_name% - メモ帳 FileDelete, %f_list% BlockInput, Off MsgBox, 4145, ,最終確認`nOKボタンを押すと、この .bat の内容でファイルがアップロードされます。`nアップロードするファイル数は計 %count%個あります。`n本当に実行しても宜しいですか? IfMsgBox, cancel return RunWait, %up_bat% MsgBox, done. return