RAR папка без сохранения полного пути - PullRequest
4 голосов
/ 13 марта 2012

1) У меня есть папка с именем CCBuilds, содержащая несколько файлов по этому пути -> E: \ Testing \ Builds \ CCBuilds.

2) Я написал код C # (Process.Start), чтобы Rar этой папки и сохранить его в E: \ Testing \ Builds \ CCBuilds.rar с помощью следующей команды

"C: \ program files \ winrar \ rar.exe a E: \ Testing \ Builds \ CCBuilds.rar E: \ Testing \ Builds \ CCBuilds "

3) Проблема в том, что, хотя rarфайл создается должным образом, когда я удаляю файл из папки CCBuilds2 (как с помощью кода с помощью команды "rar.exe x", так и с помощью Извлечения в контекстном меню), папка без поврежденных данных содержит полный путь: например: Извлечение E: \ Testing \ Builds\ CCBuilds.rar -> E: \ Testing \ Builds \ CCBuilds2 \ Testing \ Builds \ CCBuilds \ <>

В то время как я хочу, чтобы это было примерно так: E: \ Testing \ Builds \ CCBuilds2 \ CCBuilds \<>

Как я могу избежать сохранения полного пути при добавлении в rar / извлечении из него.Любая помощь приветствуется.

Ответы [ 3 ]

18 голосов
/ 10 апреля 2012

Используйте ключ -ep1.

Дополнительная информация:

-ep = Файлы добавляются в архив без указания пути. Может привести к тому, что в архиве будет несколько файлов с тем же именем.

-ep1 = Не сохранять в архиве путь, введенный в командной строке. Исключить базовую папку из имен.

-ep2 = Развернуть пути до полного. Сохраняйте полные пути к файлам (кроме буквы диска и обратной косой черты) при архивировании.

(источник: http://www.qa.downappz.com/questions/winrar-command-line-to-add-files-with-relative-path-only.html)

1 голос
/ 17 сентября 2015

На всякий случай это помогает: я сейчас работаю над проектом базы данных MS Access (управление взаимоотношениями с клиентами для небольшой компании), и одна из задач заключается в том, чтобы заархивировать docx-файлы для отправки клиентам с определенной используется шифрование пароля.

В процедуре VBA, которая запускает zip-упаковку docx-файлов, я вызываю WinRAR следующим образом:

c:\Programme\WinRAR\winrar.exe a -afzip -ep -pThisIsThePassword "OutputFullName" "InputFullName" 

-afzip говорит: «Создайте zip-файл (в отличие от rar-файла)

-ep говорит: не включайте пути к исходному файлу, т.е. поместите файл непосредственно в папку zip

Полный список таких ключей доступен в справке WinRAR, раздел «Командная строка».

0 голосов
/ 08 мая 2019

x извлекает его как E: \ Testing \ Builds \ CCBuilds2 \ Testing \ Builds \ CCBuilds \, потому что вы используете полный путь при объявлении источника. Либо используйте -ep1, либо установите рабочий каталог по умолчанию E: \ Testing \ Builds.

Использование -ep1 необходимо, но это немного сложно.
Если вы используете:

Winrar.exe output.rar inputpath
Winrar.exe a E: \ Testing \ Builds \ CCBuilds.rar E: \ Testing \ Builds \ CCBuilds

будет включать объявленный путь ввода:

E: \ Testing \ Builds \ CCBuilds -> E: \ Testing \ Builds \ CCBuilds.rar:
Тестирование \ Строит \ CCBuilds \ file1
Тестирование \ Строит \ CCBuilds \ file2
Тестирование \ Строит \ CCBuilds \ folder1 \ file3
...

, который в итоге будет распакован, как вы упомянули:

E: \ Testing \ Строит \ CCBuilds2 \ Testing \ Строит \ CCBuilds \

Существует два способа использования -ep1.

Если вы хотите простой путь:

E: \ Testing \ Строит \ CCBuilds \

извлекается как:

E: \ Testing \ Строит \ CCBuilds2 \ CCBuilds \ file1
E: \ Testing \ Строит \ CCBuilds2 \ CCBuilds \ file2
E: \ Testing \ Строит \ CCBuilds2 \ CCBuilds \ path1 \ file3
...

использовать

Winrar.exe a -ep1 E: \ Testing \ Builds \ CCBuilds.rar E: \ Testing \ Builds \ CCBuilds

файлы внутри архива будут выглядеть так:

CCBuilds \ file1
CCBuilds \ file2
CCBuilds \ folder1 \ file3
...

или вы можете использовать ep1 для простого добавления файлов и структуры папок без базовой папки с помощью рекурсии и определения базового пути в качестве внутреннего пути структуры:

Winrar.exe a -ep1 -r E: \ Testing \ Builds \ CCBuilds.rar E: \ Testing \ Builds \ CCBuilds \ *

Файлы:

E: \ Testing \ Строит \ CCBuilds \ file1
E: \ Testing \ Строит \ CCBuilds \ file2
E: \ Testing \ Строит \ CCBuilds \ folder1 \ file3
...

внутри архива будет выглядеть так:

file1
file2
folder1 \ file3
...

при извлечении будет выглядеть так:

E: \ Testing \ Строит \ CCBuilds2 \ file1
E: \ Testing \ Строит \ CCBuilds2 \ file2
E: \ Testing \ Строит \ CCBuilds2 \ folder1 \ file3
...

В любом случае, это два способа, которыми можно использовать -ep1, чтобы исключить базовый путь с или без папки, содержащей файлы (базовая папка / или базовый путь).

...