#c# #rar #winrar #unrar
Вопрос:
В настоящее время я работаю над извлечением файла(также может быть .rar/.zip файл тоже) из определенного файла .rar из нескольких файлов .rar из определенного каталога с помощью Unrar через C# WPF. Существует в общей сложности 110 зашифрованных файлов .rar размером 4 ГБ каждый.
Пример параметров: Пожалуйста, обратите внимание, что источник и место назначения являются сетевыми путями.
- джобид: 12345.zip
- Исходный каталог: АрхивыАвгуст-2021Данные
- путь: ArchivesAug-2021Datapart9.rar
- Путь к назначению: Удалить сервер1Файлы заданий
- Все исходные пути RAR зашифрованы — Пароль: «passP123»
Цель: Извлечь 12345.rar из ArchivesAug-2021Datapart9.rar с паролем, использующим Unrar, без перебора всех зашифрованных файлов .rar.
Используемый код команда:
using (Process process = new Process())
{
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = unRarPath;
process.StartInfo.Arguments = string.Format(@"x ""{0}"" -p{1} {2} ""{3}""", path, "passP123", jobid ".zip", destPath);
process.StartInfo.CreateNoWindow = true;
process.Start();
if (File.Exists(destPath "\" jobid ".zip"))
{
try
{
//process.Kill();
//Kill all processes regardless of the thread.
foreach (var proc in Process.GetProcessesByName("Unrar"))
{
proc.Kill();
}
}
catch (Exception ex)
{
}
finally
{
}
//CancelAllAsync();
break;
//return true;
}
//process.Kill();
process.WaitForExit();
};
Вопрос:
- В настоящее время он выполняет свою работу (извлекает конкретный файл 12345.zip). Однако, как только команда будет выполнена -> Он всегда начинается с начала списка вот так:
Так как я изучаю part9.rar файл для извлечения 12345.zip, процесс UnRar всегда начинается с part1.rar, тогда part2.rar, и так далее, пока не достигнет part9.rar чтобы извлечь файл, а затем продолжить.
Тестирование:
- Я смог создать тот же процесс в своих локальных и тестовых сетевых путях, но не смог воссоздать проблему. Я создал 110 зашифрованных файлов .rar по 1 КБ каждый (далеко не 4 ГБ). Работает отлично.
- ЗАДАЧА: Возможно, создать 110 зашифрованных файлов .rar по 4 ГБ каждый (это определенно увеличит объем моего хранилища lol). Ожидаемый.
Вывод: я не уверен, что это связано с тем, что размер файла составляет 4 ГБ каждый, что UnRar.exe не удается специально извлечь из объявленного пути .rar и вместо этого начинается с верхней части списка. Любые предложения были бы очень признательны. Спасибо.
Комментарии:
1. Однако действительно ли эти файлы rar разделены? Для меня это похоже на rar с разделением на dvd, и все предыдущие файлы 1-8 необходимы, чтобы иметь возможность извлечь что-то из, например, файла 9
2. В целом, я не думаю, что на ваш вопрос можно ответить; unrar, похоже, ведет себя как обычно, включая ту часть, где он продолжает поиск по остальным сжатым данным в поисках дополнительных файлов, соответствующих шаблону
3. Привет, @CaiusJard. Я ценю вашу проницательность. И я не думаю, что это будет rar с разделением на DVD, так как файл rar содержит разные типы заданий/журналов на разные даты. Что касается последнего, то в данный момент я чувствую себя безнадежным, лол. Основная цель этого-выполнить слепой поиск с использованием 3 фоновых работников. 110/3 даст мне 3 набора, и каждый набор будет начинаться с шагом (110/3). При этом будут случаи, когда я не буду знать, где находится точный журнал, поэтому я бы запустил 3 фоновых рабочих процесса для запуска UnRar. До сих пор этот метод работает во всех моих тестовых случаях :).
4. Я хотел бы оставить это открытым на некоторое время, если это нормально-просто на случай, если у кого-то может быть какое-то представление. 🙁 Но на данный момент у меня будет только 1 фоновый рабочий процесс, так как было бы определенно бессмысленно запускать 3 фоновых рабочих процесса, которые изначально начинались бы в верхней части lol.
5. Переместите один из ранних файлов (часть 3?) в другой каталог, затем попробуйте открыть, например, часть 9 в Windows gui winrar и протестировать архив. Это работает? Если нет, я бы сказал, что архивы являются частью набора и их нужно извлечь с самого начала..