Просто сжать 1 папку в пакетном режиме с помощью командной строки WinRAR?

Использование командной строки WinRAR (C:\Program Files\WinRAR\rar.exe)все, что я пытаюсь сделать, это сжать одну папку (C:\Users\%username%\desktop\someFolder) и, возможно, изменить имя созданного файла.zip. Я пробовал просто "rar.exe а"C:\Users\%username%\desktop\someFile"и это работает, но он сжимает другую папку (не ту, которую я положил).

Что я делаю неправильно?

Можете ли вы также дать объяснение (и, возможно, скажите мне, что такое рекурсия, потому что я не знаком с ней)?

Спасибо

1 ответ

Решение

Используйте либо

"%ProgramFiles%\WinRAR\Rar.exe" a -ep1 -idq -r -y "Name of RAR file with path" "%UserProfile%\Desktop\someFolder"

или же

"%ProgramFiles%\WinRAR\Rar.exe" a -ep1 -idq -r -y "Name of RAR file with path" "%UserProfile%\Desktop\someFolder\"

создать архив RAR с указанным именем после команды a (добавить в архив) и переключатели

  • -idq... включить тихий режим для отображения только сообщений об ошибках,
  • -ep1... исключить базовый каталог из указанных имен файлов / папок,
  • -r... рекурсивно архивировать / сжимать все файлы и подкаталоги,
  • -y... примите да на все запросы.

Папка someFolder включен в архив с первой командной строкой без обратной косой черты в конце.

Папка someFolder НЕ включается в архив, только файлы и подкаталоги этой папки, со второй командной строкой с обратной косой чертой в конце.

Другими словами вариант -ep1 приводит к пропуску всего от пути до последнего обратного слеша в указанном имени файла или папки при добавлении файла или папки в архив, что объясняет разницу при добавлении папки без или с обратным слэшем в конце, указанном в командной строке.

Рекурсия означает добавление не только файлов в указанной папке, но также всех подпапок и всех файлов во всех подпапках.

Таким образом, RAR должен искать сначала в указанной папке подпапку. Если найдено, перейдите в эту подпапку и снова найдите подпапку. Если он найден, перейдите в эту подпапку и найдите подпапку. Если никто не найден, добавьте файлы в этой подпапке в архив или просто имя папки, если подпапка пуста. Затем вернитесь в родительскую папку и продолжите поиск следующей подпапки. Если ничего не найдено, добавьте файлы этой подпапки. Затем вернитесь в родительскую папку и продолжите поиск подпапки и так далее.

Как вы можете прочитать, одна и та же процедура выполняется снова и снова для каждой ветви всего дерева папок, пока все подпапки не будут обработаны. Это делается с помощью рекурсии. Подпрограмма поиска подпапок вызывает себя каждый раз, когда подпапка найдена.

НОТА:

Консольная версия Rar.exe поддерживает только создание / извлечение архивов RAR. Он не поддерживает ZIP архивы. Это четко написано в текстовом файле Rar.txt вверху - руководство по консольной версии WinRAR. Надо было бы использовать WinRAR.exe вместо RAR.exe создавать ZIP архивы.

Пример 1:

"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -ep1 -ibck -r -y "Name of ZIP file with path" "%UserProfile%\Desktop\someFolder"

Пример 2:

"%ProgramFiles%\WinRAR\WinRAR.exe" a -afzip -ep1 -ibck -r -y "Name of ZIP file with path" "%UserProfile%\Desktop\someFolder\"

Версия с графическим интерфейсом WinRAR.exe имеет много команд и переключателей, идентичных консольной версии Rar.exe, но есть различия, как показано здесь с -afzip поддерживается только WinRAR.exe а также -ibck вместо -idq запускать WinRAR в фоновом режиме, что означает сворачивание в системный трей, а не на переднем плане с видимым окном прогресса.

За помощь в создании WinRAR.exe Запустите командную строку WinRAR, щелкните в последнем главном меню " Справка" в первом пункте меню "Разделы справки", выберите вкладку " Содержание", разверните элемент списка и выберите " Режим командной строки".

  • Синтаксис командной строки
  • Список буквенных команд
  • Список буквенных переключателей

Желательно читать страницы справки в указанном порядке и текстовом файле. Rar.txt сверху вниз при создании WinRAR.exe или же Rar.exe командная строка для использования в командном файле или в файле ярлыка (*.lnk).

Другие вопросы по тегам