阳光网驿-企业信息化交流平台【DTC零售连锁全渠道解决方案】

 找回密码
 注册

QQ登录

只需一步,快速开始

扫描二维码登录本站

手机号码,快捷登录

老司机
查看: 1794|回复: 0

[推荐] 在windows下使用7z.exe快速将文件夹打包为tgz文件的方法

[复制链接]
  • TA的每日心情
    擦汗
    2014-10-24 11:56
  • 签到天数: 46 天

    [LV.5]常住居民I

    发表于 2011-9-15 15:03:57 | 显示全部楼层 |阅读模式
    工作中一个经常性的动作是源码和发布等都是用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!


    楼主热帖
    启用邀请码注册,提高发帖质量,建设交流社区
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表