如何在服务器上调用外部程序对文件夹进行压缩,问题解决,马上结帖!!!

解决方案 »

  1.   

    可以通process 类和 ProcessStartInfo 类來实现...
    如:
        Dim myProcess As New Process
            myProcess.StartInfo.FileName = "rar.exe"
            myProcess.StartInfo.WindowStyle = ProcessWindowStyle.Maximized
            myProcess.Start()或 
      System.Diagnostics.Process.Start("CMD.exe", "/c NotePad ")此段代码能实现调用外部程序么?
      

  2.   

    我用c#做的,你参考一下。commandstr=" a "+filepath+" "+foldpath;
    Process.Start("winrar.exe",@commandstr);
      

  3.   

    winrar好像安装之后有一个接口还是dos程序……公司机器没有winrar,记不清了
      

  4.   

    不过何必用winrar呢,如果用zip格式,有现成的类库:http://www.icsharpcode.com/OpenSource/SharpZipLib/Default.aspx
      

  5.   

    /// <summary>
    /// 调用DOS命令,注意多条DOS命令必须以|号隔开
    /// </summary>
    /// <param name="argm">要操作的DOS命令</param>
    /// <returns>返回取到的信息值</returns>
    static public string mycmd(string argm) 
    {
      string myOutString = "";
      //开始创建文件 
      Process p = new Process(); 
      p.StartInfo.UseShellExecute = false; 
      p.StartInfo.RedirectStandardInput = true; 
      p.StartInfo.RedirectStandardOutput = true; 
      p.StartInfo.RedirectStandardError = true; 
      p.StartInfo.CreateNoWindow = true;
      p.StartInfo.FileName = "cmd.exe";   try 
      { 
        p.Start();
        string[] ary = argm.Split('|');
        for(int i=0;i<ary.Length;i++)
        {
          p.StandardInput.WriteLine(ary[i].ToString()); 
        }
        p.StandardInput.WriteLine("exit");
        myOutString = p.StandardOutput.ReadToEnd();
        p.Close(); 
      } 
      catch(Exception ex)
      { 
        throw new Exception (ex.Message); 
      }  return(myOutString);
    }
    调用命令:
    mycmd("rar a d:\\sql\\xxx.rar d:\\sql\\xxx.gif");
      

  6.   

    下面是RAR DOS命令行操作命令Imports System.IO
    Dim jro As JRO.JetEngine
                jro = New JRO.JetEngine
                Dim mystr As String = "" & Me.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings("database")) & ""
                Dim compressbaseml As String = mystr.Substring(0, mystr.LastIndexOf("\"))
                File.Delete(compressbaseml & "\compress.mdb")
                jro.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Me.Server.MapPath(System.Configuration.ConfigurationSettings.AppSettings("database")) & "", _
        "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & compressbaseml & "\compress.mdb")
                'Dim fnname As String = mystr.Substring(mystr.LastIndexOf("\") + 1)  '得到文件名
                File.Delete(mystr)
                    Rename(compressbaseml & "\compress.mdb", mystr)
                    Me.Label1.Text = "数据库压缩成功!"
    引用 Interop.JRO.dll
      

  7.   

    贴错了RAR 3.30 版权 (c) 1993-2004 为 Eugene Roshal 所有 22 Jan 2004
    共享软件版本 键入 RAR -? 或 RAR /? 或 RAR | MORE 可获得帮助用法: rar <命令> -<开关 1> -<开关 N> <档案文件> <文件...>
    <@列表文件...> <释放路径\><命令>
    a 添加文件到档案文件中
    c 添加档案文件注释
    cf 添加文件注释
    cw 写入档案文件注释到文件中
    d 从档案文件中删除文件
    e 释放文件到当前目录
    f 刷新档案文件内的文件
    i[par]=<str> 在档案文件内查找字符串
    k 锁定档案文件
    l[t,b] 列表档案文件 [技术支持信息, 梗概信息]
    m[f] 移动到档案文件 [仅文件]
    p 打印文件到标准输出设备
    r 修复档案文件
    rc 重建丢失的卷
    rn 重命名已归档的文件
    rr[N] 添加数据恢复记录
    rv[N] 创建恢复卷
    s[名称|-] 转换档案文件为自释放格式
    t 测试档案文件
    u 更新档案文件内的文件
    v[t,b] 列表档案文件详细资料 [技术支持信息, 梗概信息]
    x 以完整路径释放文件<开关>
    - 停止开关扫描
    ac 压缩或释放后清除「存档」属性
    ad 追加档案文件名到目标路径
    ag[格式] 使用当前日期做为档案文件名
    ao 添加带有「存档」属性的文件
    ap<路径> 设置档案文件内部路径
    as 同步档案文件内容
    av 设置用户身份校验 (仅用于注册版)
    av- 禁止用户身份校验检查
    c- 禁止注释显示
    cfg- 禁止读取配置
    cl 转换名字为小写字母
    cu 转换名字为大写字母
    df 归档后删除来源文件
    dh 打开共享文件
    ds 禁止固定档案文件的名称排序
    e<属性> 设置要排除的文件属性
    ed 不添加空目录
    en 不要放置 '档案文件末尾' 块
    ep 排除路径
    ep1 排除基准目录
    ep2 扩充为完整路径
    f 刷新文件
    hp[密码] 加密文件数据和标头
    idp 禁止百分比显示
    ieml[地址] 通过电子邮件发送档案文件
    ierr 发送所有讯息至标准错误输出设备
    ilog[文件名] 记录错误讯息到文件 (只在注册版中可用)
    inul 禁止所有讯息
    ioff 完成操作后关闭计算机
    isnd 允许声音提示
    k 锁定档案文件
    kb 保留损坏的文件
    m<0..5> 设置压缩等级 (0-存储...3-默认...5-最大)
    mc<参数> 设置高级压缩参数
    md<大小> 以 KB 为单位的字典大小 (64,128,256,512,1024,2048,4096 或 A-G)
    ms[ext;ext] 指定要保存的文件类型
    o+ 覆盖已存在的文件
    o- 不覆盖已存在的文件
    os 保存 NTFS 数据流
    ow 保存或还原所有者和组
    p[口令] 设置口令
    p- 不询问口令
    r 包含所有子目录
    r0 只包含与通配符匹配的所有子目录
    rr[N] 添加数据恢复记录
    rv[N] 创建恢复卷
    s[<N>,v[-],e] 创建固定格式档案文件
    s- 禁止创建固定格式档案文件
    sfx[名字] 创建自释放档案文件
    si[名字] 从标准输入设备 (stdin) 读取数据
    t 归档后测试文件
    ta<日期> 处理在 YYYYMMDDHHMMSS 格式中 <指定日期> 后修改的文件
    tb<日期> 处理在 YYYYMMDDHHMMSS 格式中 <指定日期> 前修改的文件
    tk 保持原有的档案文件时间
    tl 将档案文件时间设为最新文件的时间
    tn<时间> 处理比 <指定时间> 更新的文件
    to<时间> 处理比 <指定时间> 旧的文件
    ts<m,c,a>[N] 保存或恢复文件时间属性 (修改、创建及访问时间)
    u 更新文件
    v 创建分卷压缩时自动检测大小或列出所有的分卷
    v<大小>[k,b] 创建分卷, 分卷大小 = <大小> * 1000 [*1024, *1]
    vd 创建分卷前先清除磁盘内容
    ver[n] 文件版本控制
    vn 使用旧样式的卷命名方案
    vp 在每个分卷压缩前暂停
    w<路径> 指定工作目录
    x<文件> 排除指定的文件
    x@ 从标准输入设备读取要排除的文件名
    x@<列表> 排除指定列表文件中的文件
    y 所有的询问都回答是
    z<文件> 从文件读取档案文件注释
      

  8.   

    我首先敬佩各位高手的代码
    再就是怀疑asp.net用户是不是能有这么大的权限
      

  9.   

    再就是怀疑asp.net用户是不是能有这么大的权限
    -----------------------
    我的项目里面就是这样用的.没有问题.
      

  10.   

    上网找找有没有现成的操作RAR文件的类库吧!