Created
December 1, 2013 09:12
-
-
Save kunst1080/7730253 to your computer and use it in GitHub Desktop.
編集中のファイルをFTPでアップロードするサクラエディタマクロ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var util = Utility(); | |
// settings | |
var FTP_IP = "xxx.xxx.xxx.xxx"; | |
var FTP_USER = "username"; | |
var FTP_PASSWORD = "password"; | |
var FTP_MODE = "ascii"; | |
// メイン関数 | |
(function main(){ | |
var locFilename = GetFilename(); // 転送元ファイル名 | |
var ftpFilename = getFtpFilename(); // 転送先ファイル名 | |
if (ftpFilename == "") { | |
util.echo("アップロード先フォルダの絶対パスがファイル内に必要です。\n" + | |
"ファイルの2行目に、下記の記述を追加して下さい。\n" + | |
"\n" + | |
"# PATH:絶対パス\n" + | |
"\n" + | |
"記入例) # PATH:/home/user/"); | |
return; | |
} | |
var ret = util.question("FTP転送を行います" + "\n" | |
+ " FROM->\t:" + locFilename + "\n" | |
+ " TO->\t\t:" + ftpFilename); | |
if (!ret){ | |
return; | |
} | |
ftp = myFtp(FTP_IP, FTP_USER, FTP_PASSWORD,FTP_MODE); | |
ftp.upload(locFilename, ftpFilename); | |
})(); | |
/** | |
* FTP転送するファイル名を取得 | |
* FTP転送先のファイル名は、ファイルの2行目に | |
* | |
* # PATH:絶対パス | |
* | |
* の形式で記述されている | |
*/ | |
function getFtpFilename(){ | |
MARK="PATH:"; | |
filename = GetLineStr(2).replace("\r","").replace("\n",""); | |
if (filename.indexOf(MARK) > -1) { | |
filename = filename.slice(filename.indexOf(MARK) + MARK.length) + "/" + ExpandParameter("$f"); | |
} else { | |
filename = ""; | |
} | |
return filename; | |
} | |
/** | |
* FTP転送を行うオブジェクト | |
*/ | |
function myFtp(aHost, aUser, aPassword, aMode){ | |
var host = aHost; | |
var user = aUser; | |
var password = aPassword; | |
var mode = aMode; | |
var tmp = (new ActiveXObject( "WScript.Shell" )).ExpandEnvironmentStrings("%tmp%").replace(/\\/g, "/"); | |
var tmpFtpText = tmp + "/sakura_ftp_command.txt"; | |
var tmpBatText = tmp + "/sakura_ftp_bat.bat"; | |
return { | |
upload : function(from, to){ | |
this._exec("put \"" + from + "\" \"" + to + "\""); | |
} | |
,_exec : function(cmd1){ | |
var io = TextIO(); | |
var ws1 = io.getTextWriter(tmpFtpText); | |
ws1.WriteLine("open " + host); | |
ws1.WriteLine(user); | |
ws1.WriteLine(password); | |
ws1.WriteLine(mode); | |
ws1.WriteLine(cmd1); | |
ws1.WriteLine("quit"); | |
ws1.close(); | |
var ws2 = io.getTextWriter(tmpBatText); | |
ws2.WriteLine("ftp -s:" + "\"" + tmpFtpText + "\""); | |
ws2.WriteLine("pause"); | |
ws2.close(); | |
util.run(tmpBatText); | |
} | |
}; | |
} | |
/** | |
* ファイルの読み書きを行う | |
*/ | |
function TextIO(){ | |
var fso = new ActiveXObject("Scripting.FilesystemObject"); | |
var ForWriting = 2; // ファイルを書き込み専用として開きます。 | |
var ForAppending = 8; // ファイルを開き、ファイルの最後に追加して書き込みます。 | |
return { | |
getTextWriter : function(file){ | |
if (fso.FileExists(file)){ | |
fso.DeleteFile(file); | |
} | |
return fso.OpenTextFile(file, 2, true); | |
} | |
} | |
} | |
/** | |
* ユーティリティー関数群 | |
*/ | |
function Utility(){ | |
var shell = new ActiveXObject("WScript.Shell"); | |
var macroname = ExpandParameter("$M"); | |
return { | |
echo: function(str){ | |
shell.popup(str); | |
}, | |
question : function(str){ | |
var ret = shell.popup(str,0,macroname,1); | |
return ret == 1 ? true : false; | |
}, | |
run : function(exe){ | |
return shell.Run(exe); | |
}, | |
getExt: function(filename){ | |
ext = ExpandParameter(filename); | |
ext = ext.substring(ext.lastIndexOf(".") + 1); | |
return ext; | |
} | |
} | |
}; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment