WinSCPで用意されているコマンドを利用しただけでは要求する機能を満たしていなかったので何とかならないものかと悪戦苦闘した結果、とりあえず何とかなったので覚え書きの意味と、同じような悩みを抱えている人の役に立てればと、可能な限り初心者にも分かりやすく手順を記しておくことにしてみた。
ただし、環境はWindows 7、WinSCP ver4.3.8(build 1771)に特化しているので他のことは知らん。
とにかくやりたかったのは以下の通り
早々にコマンドの記述に進みたいところだが、実現のためには必ずやって置かなければならないことがあったり。
"C:\Program Files\WinSCP\WinSCP.exe"となっているはず
"C:\Program Files\WinSCP\WinSCP.exe" /ini=C:\Users\xxxx\Documents\WinSCP.ini/ini= から後ろは格納されている INIファイルを指定
echo off set SESSION=接続したいセッション set SCRIPT=C:\任意のフォルダ\scpdownload.txt set TARGET=C:\ローカルディレクトリ echo cd リモートディレクトリ > %SCRIPT% echo synchronize local %TARGET% >> %SCRIPT% -delete echo exit >> %SCRIPT% cd \ cd "Program Files\WinSCP" winscp.com /ini=C:\INIファイルのフォルダ\WinSCP.ini %SESSION% /script=%SCRIPT% pause > nul
set SESSION=俺様のホームページと記述する
set SESSION=Original/WebSite/俺様のホームページと記述する
echo off サーバを探索中・・・ サーバに接続しています・・・ 認証しています・・・ ユーザ名"********" を使用中 入力済みパスワードで認証中 認証されました セッションを開始しています・・・ リモートディレクトリを読み込み中・・・ セッションを開始しました アクティブセッション: [1] Original/WebSite/俺様のホームページ /***/***/*** 比較中... ローカル 'C:\*****\*****' <= リモート '/***/***/*** ローカル 'C:\*****\*****' <= リモート '/***/***/*** ローカル 'C:\*****\*****' <= リモート '/***/***/*** ローカル 'C:\*****\*****' <= リモート '/***/***/*** ローカル 'C:\*****\*****' <= リモート '/***/***/*** 同期中... ローカル 'C:\*****\*****' <= リモート '/***/***/*** index.html | 5 KiB | 28.6 KiB/s | ascii | 100% sample.xml.gz | 4 KiB | 27.9 KiB/s | binary | 100% 'C:\Users\*****\***\scpdownload.txt' を削除しました
タスクスケジューラで定期的にバッチ処理を実行するっていうことは定期的にサイトのバックアップをするってことに
これにて WinSCPをコマンド操作してミラーリングダウンロードを実現し、それを定期的に実行する方法の説明は終わり。
長文、駄文に最後まで付き合ってもらってありがとさん。
うまくいってもお礼はいらないから失敗しても文句言ってこないでね。
Windowsが 8になったり、それより進んだり、WinSCPのバージョンが変わって、ここに記載したやり方が通用しなくなってもメンテしないかもしんないけどご容赦を。