Как разархивировать все файлы RAR в папке в определенную целевую папку?

У меня есть пакет файлов, чтобы распаковать все файлы RAR в папке в подпапку.

C:\test\sub-folder\file.rar -> C:\test\sub-folder\fileunrar

Но когда я его запускаю, файл распаковывается в базовую папку:

C:\test\sub-folder\file.rar -> C:\test\fileunrar

Это пакетный файл, который я сейчас использую:

@ECHO OFF
cd C:\test
SET PATH=C:;C:\Program Files\WinRAR;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;%PATH%
FOR /f "delims=" %%d IN ('DIR /B') DO unRaR x -y -r -o- *.rar
EXIT

Почему архивы RAR извлекаются в базовую папку?


person Alexandr Pato    schedule 07.10.2015    source источник
comment
Почему вы используете цикл for /F? почему бы просто не выполнить unrar напрямую? вы все равно не используете переменную %%d...   -  person aschipfl    schedule 08.10.2015
comment
Вопрос нечеткий. И в настоящее время цикл for бессмысленно выполняет unrar много раз, распаковывая одни и те же файлы.   -  person wOxxOm    schedule 08.10.2015


Ответы (1)


В папке программных файлов WinRAR есть текстовый файл Rar.txt, который представляет собой руководство для консольной версии Rar.exe, содержащее также все команды и переключатели, поддерживаемые UnRAR.exe, которые, конечно, не могут создавать, обновлять или восстанавливать RAR. архивы.

Запуск в окне командной строки только UnRAR.exe без каких-либо параметров приводит к отображению всех поддерживаемых команд и переключателей с кратким описанием.

UnRAR, Rar и WinRAR поддерживают распаковку нескольких файлов *.rar в каталоге без необходимости пакетного файла с циклом FOR с помощью одной команды.

Для распаковки многотомного архива достаточно указать в командной строке имя файла первого файла RAR-архива. UnRAR, Rar и WinRAR автоматически определяют, что этот файл является первым файлом многотомного архива, и автоматически обрабатывают все тома.

Конечно, UnRAR, Rar и WinRAR не обрабатывают каждый файл *.rar более одного раза при распаковке всех файлов *.rar папки, содержащей несколько отдельных архивов, а также 1 или более многотомных архивов.

Для распаковки нескольких независимых архивов *.rar одной строкой может быть полезен переключатель -ad, чтобы избежать объединения содержимого всех независимых архивов в одну директорию.

Для распаковки всех архивов *.rar из каталога C:\Temp в каталог C:\Temp\Extracted с объединением файлов и папок из всех архивов в этот каталог и автоматической перезаписью всех существующих файлов используйте следующую команду:

"%ProgramFiles%\WinRAR\UnRAR.exe" x -c- -cfg- -inul -o+ -y "C:\Temp\*.rar" "C:\Temp\Extracted\"

Извлечение всех файлов *.rar в C:\Temp с получением каждого независимого архива, извлеченного в подкаталог в C:\Temp\Extracted с именем файла архива, может быть достигнуто с помощью:

"%ProgramFiles%\WinRAR\UnRAR.exe" x -ad -c- -cfg- -inul -o+ -y "C:\Temp\*.rar" "C:\Temp\Extracted\"

Переключатель -ad определяет выходную папку.

Неважно, C:\Temp\Extracted уже существует или еще не существует для распаковки архивов. UnRAR, Rar и WinRAR всегда создают при извлечении все дерево каталогов для выходной папки, если это необходимо и, конечно, возможно (разрешения на запись, диск/общий ресурс существует и не защищен от записи).

Давайте посмотрим на пример, чтобы сделать разницу более ясной.

Есть 2 архива RAR MyFirstArchive.rar и AnotherArchive.rar в C:\Temp, содержащие следующие файлы и папки.

МойПервыйАрхив.rar

 Attributes      Size    Date   Time   Name
----------- ---------  -------- -----  ----
    .......      6302  11-10-15 15:25  zzz.doc
    .......    940942  26-08-15 08:07  yyy.txt
    .......   1430688  06-10-14 05:49  Folder1\xxx.pdf
    ...D...         0  12-10-15 07:10  Folder1
----------- ---------  -------- -----  ----
              2377932                  4

Другой архив.rar

 Attributes      Size    Date   Time   Name
----------- ---------  -------- -----  ----
    .......     28165  08-01-12 17:50  zzz.doc
    .......      3743  29-10-14 07:18  Folder2\index.txt
    .......     27141  29-10-14 07:18  Folder1\index.txt
    .......    940942  26-08-15 08:07  index.txt
    ...D...         0  12-10-15 07:10  Folder1
    ...D...         0  12-10-15 07:12  Folder2
----------- ---------  -------- -----  ----
               999991                  6

Результат первой команды:

  • C:\Temp\Extracted
    • Folder1
      • index.txt
      • ххх.pdf
    • Folder2
      • index.txt
    • index.txt
    • гггг.txt
    • zzz.doc

zzz.doc в AnotherArchive.rar перезаписал zzz.doc в MyFirstArchive.rar.

Вторая команда с переключателем -ad приводит к:

  • C:\Temp\Extracted
    • MyFirstArchive
      • Folder1
        • xxx.pdf
      • гггг.txt
      • zzz.doc
    • AnotherArchive
      • Folder1
        • index.txt
      • Folder2
        • index.txt
      • index.txt
      • zzz.doc

Папка и файлы 2-х архивов распаковываются в отдельные папки с именем файла архива.

person Mofi    schedule 08.10.2015