2011年1月7日金曜日

winscpをバッチ処理で使用する

こんなこともできるらしい。
サクラのマクロに取り込めば、いろいろなことが自動化できそう

下記を1行でコマンドラインに打つ
"C:\Program Files\WinSCP\winscp.com" /command
   "open ""mashiki@shell.sourceforge.jp"""
   "put ""C:\DLSoft\develop\ext-doc-1.0.131\extwikidoc.zip""
   ""/home/groups/e/ex/extwiki/htdocs/"""
   "exit"

参考
http://winscp.net/eng/docs/commandline
http://winscp.net/eng/docs/script_commands

実際に作って使っているのがこれ
・現在のファイルがextwiki-debug.jsか確認
・現在のファイルを保存する
・SJISにして名前を付けてextdoc用のフォルダに保存する
・ext-docに変換する
・生成されたファイル数が大量のためzipに固める
・zipをサーバのドキュメントルートにアップロードし解凍する

// ext-doc.js
var cmd, oe,
 TARGET = 'extwiki-debug.js',
 DOCDIR = 'C:\\DLSoft\\develop\\ext-doc-1.0.131',
 SAVEAS = 'DOCDIR\\source\\extwiki.js',
 MAKEDOC= 'java -jar DOCDIR\\ext-doc.jar'
   +' -p DOCDIR\\source/extwiki.xml'
   +' -o DOCDIR\\extwikidoc'
   +' -t DOCDIR\\template/ext/template.xml'
   +' -verbose',
 ZIPDOC = '"C:/Program Files/Lhaplus/Lhaplus.exe" /c:zip /o:DOCDIR DOCDIR\\extwikidoc',
 PUTFILE= '"C:/Program Files/WinSCP/winscp.com" /log=log.txt /command'
   +' "open ""mashiki@shell.sourceforge.jp"""'
   +' "cd ""/home/groups/e/ex/extwiki/htdocs/"""'
   +' "put ""DOCDIR\\extwikidoc.zip"""'
   +' "call unzip -o extwikidoc.zip"'
   +' "exit"'
 ws = new ActiveXObject("WScript.Shell"),
 fn = GetFilename().replace(/^.*\\/,'');
// 現在のファイルがextwiki-debug.jsか確認
if (fn!==TARGET) {
 ws.Popup('ファイル名"' + fn + '"は処理対象外です', 0, "ファイル名", 0);
} else {
 // 現在のファイルを保存する
 FileSave();

 // SJISにして名前を付けて保存する
 FileSaveAs(resolveVars(SAVEAS),0,1); // SJIS, CRLF

 // ext-docに変換する
 oe = ws.Run(
  resolveVars(MAKEDOC),
  1,   // ウィンドウをアクティブにして表示する。
  true // 終了するまでスクリプトの実行を停止
 );

 // zipに固める
 oe = ws.Run(
  resolveVars(ZIPDOC),
  1,   // ウィンドウをアクティブにして表示する。
  true // 終了するまでスクリプトの実行を停止
 );

 // zipをサーバにアップロードし解凍する
 oe = ws.Run(
  resolveVars(PUTFILE),
  1,   // ウィンドウをアクティブにして表示する。
  true // 終了するまでスクリプトの実行を停止
 );

}

function resolveVars(path) {
 return path.replace(/DOCDIR/g, DOCDIR);
}

0 件のコメント:

コメントを投稿