正在提取.cab文件

本文关键字:文件 cab 提取 | 更新日期: 2023-09-27 18:21:29

我想提取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文件。

正在提取.cab文件

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

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

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

如果要使用原始名称的文件,则需要-I。否则,它将保留原始CAB名称(至少当cat文件只有一个文件时会发生这种情况)。我的意思是,如果文件名是file。CAB输出的名称将是file。CAB而不是file.txt,因为CAB文件只有一个名为file.txt的文件。如果您还想保留目录结构,请将-I更改为-R