提取.cab文件

时间:2014-09-10 05:52:38

标签: c# cab

我想在c#.net

中提取特定文件夹中的所有.cab文件
static int ExtractCabFiles()
    {



        try
        {

            Console.WriteLine("Extracting Cab files");
            string strCommand = @"extrac32.exe";
            var strArrCabDetails = new string[3];
            strArrCabDetails[0] = ConfigurationManager.AppSettings["Cab_Files_Path"];
            strArrCabDetails[1] = "/L";
            strArrCabDetails[2] = ConfigurationManager.AppSettings["Event_Files_Folder_Path"];

            WriteLog("Cab files path : " + ConfigurationManager.AppSettings["Cab_Files_Path"] + "", false, false);

            const string strArgsSeparator = " ";
            string strArgs = string.Join(strArgsSeparator, strArrCabDetails);

            Process process = new Process();
            process.StartInfo.FileName = strCommand;
            process.StartInfo.Arguments = strArgs;
            process.StartInfo.CreateNoWindow = true;
            process.StartInfo.UseShellExecute = false;
            process.StartInfo.RedirectStandardError = true;
            process.StartInfo.RedirectStandardOutput = true;
            WriteLog("Extract Command : " + strCommand + " " + strArgs + "", false, false);
            process.Start();

            //string strError = process.StandardError.ReadLine();
            iExitCode = process.ExitCode;


             }
        catch (Exception ex)
        {

        }
    }

此代码将提取单个.cab文件,但我想从文件夹中提取多个.cab文件。

1 个答案:

答案 0 :(得分:1)

这是一个老问题,但我遇到了同样的问题

要提取多个文件,只需使用通配符和展开命令,例如

展开" C:\ InputFolder * .CAB" -I -F:* C:\ OutputFolder

如果您希望文件具有原始名称,则 -I 是必需的。否则它将保持原始CAB名称(至少在cat文件只有一个文件时会发生什么)。我的意思是如果文件的名称是file.CAB,输出的名称将是file.CAB而不是file.txt,因为CAB文件只有一个名为file.txt的文件。如果您还要保留目录结构,请将 -I 更改为 -R