Я пытаюсь заархивировать некоторые папки. У них разные пути, они не будут принадлежать одному и тому же каталогу.
Я проверил аргументы командной строки, которые я бы дал, и они работают, но я не могу заставить их работать с С#:
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 (которую я использовал для перезаписи) — после ее удаления она заработала.
StringBuilder
, так как вы выполняете конкатенацию строк внутри цикла for/foreach. - person neontapir   schedule 19.07.2012