C# Извлеките только 1 файл .rar из нескольких (110 файлов .rar) с паролем по 4 ГБ каждый.

#c# #rar #winrar #unrar

Вопрос:

В настоящее время я работаю над извлечением файла(также может быть .rar/.zip файл тоже) из определенного файла .rar из нескольких файлов .rar из определенного каталога с помощью Unrar через C# WPF. Существует в общей сложности 110 зашифрованных файлов .rar размером 4 ГБ каждый.

Пример параметров: Пожалуйста, обратите внимание, что источник и место назначения являются сетевыми путями.

  1. джобид: 12345.zip
  2. Исходный каталог: АрхивыАвгуст-2021Данные
  3. путь: ArchivesAug-2021Datapart9.rar
  4. Путь к назначению: Удалить сервер1Файлы заданий
  5. Все исходные пути 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();

                };
 

Вопрос:

  1. В настоящее время он выполняет свою работу (извлекает конкретный файл 12345.zip). Однако, как только команда будет выполнена -> Он всегда начинается с начала списка вот так:

Так как я изучаю part9.rar файл для извлечения 12345.zip, процесс UnRar всегда начинается с part1.rar, тогда part2.rar, и так далее, пока не достигнет part9.rar чтобы извлечь файл, а затем продолжить.

Тестирование:

  1. Я смог создать тот же процесс в своих локальных и тестовых сетевых путях, но не смог воссоздать проблему. Я создал 110 зашифрованных файлов .rar по 1 КБ каждый (далеко не 4 ГБ). Работает отлично.
  2. ЗАДАЧА: Возможно, создать 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 и протестировать архив. Это работает? Если нет, я бы сказал, что архивы являются частью набора и их нужно извлечь с самого начала..