我正在尝试压缩一些文件夹。它们有不同的路径,不属于同一目录。
我测试了我会给出的命令行参数,但是它有效,但是我无法通过c#来实现它:
string destination = "some path\\name.7z";
string pathToZip = "path to zip\\7z.exe"; // or 7za.exe
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = pathToZip;
p.Arguments = "a \"" + destination + "\" \"";
// room for the foreach - but even one directory doesn't work right now
p.Arguments += directoryPath + "\" \"";
p.Arguments += "\" -mx=9 -aoa";
Process x = Process.Start(p);
使用7z.exe我会眨眼;使用7za.exe,我得到典型的命令行zip序列,文件压缩,添加到存档,并创建存档。
然后我转到它并右键单击,打开或双击......我发现它是一个无效的存档(Can not open file "name.7z" as an archive
)。尝试使用7za命令行来提取 - 同样的事情。
编辑:我找到了解决方案:
我的问题是 -aoa 选项(我用于覆盖) - 删除后,它有效。
答案 0 :(得分:1)
此代码适用于我,包含一个包含以下文件的目录:
string destination = @"c:\my test.7z";
string pathToZip = @"C:\Program Files\7-Zip\7z.exe";
string directoryPath = @"c:\my test";
ProcessStartInfo p = new ProcessStartInfo();
p.FileName = pathToZip;
p.Arguments = string.Format("a -mx=9 \"{0}\" \"{1}\"", destination, directoryPath);
Process x = Process.Start(p);
答案 1 :(得分:0)
7za.exe
是命令行程序,您应该在此实例中使用它。
为什么要在命令行中添加""
?这可能会导致您的问题。
另外,请确保将"
放在周围的东西上,不要在最后填充其中两个,这只会导致问题。
答案 2 :(得分:0)