我想在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文件。
答案 0 :(得分:1)
这是一个老问题,但我遇到了同样的问题
要提取多个文件,只需使用通配符和展开命令,例如
展开" C:\ InputFolder * .CAB" -I -F:* C:\ OutputFolder
如果您希望文件具有原始名称,则 -I 是必需的。否则它将保持原始CAB名称(至少在cat文件只有一个文件时会发生什么)。我的意思是如果文件的名称是file.CAB,输出的名称将是file.CAB而不是file.txt,因为CAB文件只有一个名为file.txt的文件。如果您还要保留目录结构,请将 -I 更改为 -R