TA的每日心情 | 擦汗 2014-10-24 11:56 |
---|
签到天数: 46 天 [LV.5]常住居民I
|
工作中一个经常性的动作是源码和发布等都是用tgz格式的文件,而windows中使用7z的右键菜单将文件夹打包为tgz文件很不方便:首先要将文件夹打包成tar文件,再把tar文件压缩成tgz文件。
研究了7z.exe的命令行参数,发现可以写一个脚本来快速把一个文件夹打包为tgz,于是编写了这样一个wscript的js脚本:
// folder2tgz.js
var m_wsh = new ActiveXObject("WScript.Shell");
function _Debug(str)
{
WScript.StdOut.WriteLine(str);
}
function Folder2Tgz(path)
{
//检查文件夹是否存在
var fso = new ActiveXObject("Scripting.FileSystemObject");
if (!fso.FolderExists(path))
{
_Debug("path not exists![" + path + "]");
return;
}
var path_len = path.length;
var last_char = path.charAt(path_len-1);
if (last_char=='\\' || last_char=='\/')
{
path = path.substr(0, path_len-1);
}
var re = /\\/g;
path = path.replace(re, "\/");
var loc = path.lastIndexOf("\/");
if (-1==loc)
{
_Debug("path error![" + path + "]");
return;
}
var folder_name = path.substr(loc+1);
_Debug(folder_name);
var cmd = "\"C:\\Program Files\\7-Zip\\7z.exe\" a -ttar %temp%\\" + folder_name + ".tar \"" + path + "\"";
_Debug(cmd);
m_wsh.Run(cmd, 0, true);
cmd = "\"C:\\Program Files\\7-Zip\\7z.exe\" a -tgzip \"" + path + "\\..\\" + folder_name + ".tgz\" %temp%\\" + folder_name + ".tar";
_Debug(cmd);
m_wsh.Run(cmd, 0, true);
fso.DeleteFile(fso.GetSpecialFolder(2).Path + "\\" + folder_name + ".tar");
}
function main()
{
if (WScript.Arguments.length!=1)
{
_Debug("WScript.Arguments.length=" + WScript.Arguments.length);
return;
}
Folder2Tgz(WScript.Arguments(0));
}
main();
// end file folder2tgz.js
把folder2tgz.js这个文件保存到c:\windows目录。
然后打开:C:\Documents and Settings\ahfu\SendTo 这个目录(注意,如果你不叫ahfu,把这个替换掉),新建一个folder2tgz.bat的文件:
@rem folder2tgz.bat
cscript.exe %windir%\folder2tgz.js %1%
OK! 现在在某个文件夹上点右键,点"发送到",就会出现folder2tgz.bat,点击这项,文件夹就打包成tgz了!yeah!
|
|