2

我想将 rar 文件提取到某个位置。问题是,rar 文件包含 4 个文件夹,并且提取失败。我需要将 rar 中的所有文件和文件夹提取到位置文件夹。并提取不存在的文件。

到目前为止我做了什么:

Process winrar = new Process();
winrar.StartInfo.FileName = WinrarPath + @"\unrar.exe";
winrar.StartInfo.CreateNoWindow = true;
winrar.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
winrar.EnableRaisingEvents = true;
winrar.ErrorDataReceived += new 
DataReceivedEventHandler(winrar_ErrorDataReceived);
string src = downloadFilPath; // directory , not the file itself
string des = @"D:\"
winrar.StartInfo.Arguments = string.Format("x -o+ {0} {1}", src, des);
winrar.Start();
winrar.WaitForExit();

如果 rar 文件只包含一个文件夹,它会很好用。问题在于其中包含多个文件夹的 rar 文件。也许它会帮助你为我的问题提供解决方案。

谢谢,修基

4

1 回答 1

4

使用命令行开关“-o+”指定自动覆盖。在您的示例中,参数行将变为:

winrar.StartInfo.Arguments = string.Format("x -o+ \"{0}\" \"{1}\"", src, des);

但是,根据您需要此应用程序的可移植性和可靠性,您可能需要考虑使用本机 .NET 库来处理 RAR 和其他存档处理。我过去成功使用过的一个这样的库是SharpCompress

从 WinRAR 帮助文件:

开关 -O[+|-] - 设置覆盖模式


提取和更新存档文件时都可以使用此开关。可以使用以下模式:

-o 覆盖前询问(提取文件的默认值)

-o+ 覆盖所有(更新归档文件的默认值);

-o- 跳过现有文件。

于 2013-04-22T14:54:55.723 回答