7

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\<<my files>>

而我希望它是这样的:E:\Testing\Builds\CCBuilds2\CCBuilds\<<my files>>

如何在添加到 rar/从中提取时避免这种完整路径持久性。任何帮助表示赞赏。

4

3 回答 3

23

使用 -ep1 开关。

更多信息:

-ep = 将文件添加到存档中,但不包含路径信息。可能导致存档中存在多个同名文件。

-ep1 = 不要将在命令行输入的路径存储在存档中。从名称中排除基本文件夹。

-ep2 = 将路径扩展至完整。归档时存储完整的文件路径(驱动器号和前导反斜杠除外)。

(来源:http ://www.qa.downappz.com/questions/winrar-command-line-to-add-files-with-relative-path-only.html )

于 2012-04-10T16:25:17.580 回答
1

以防万一这有帮助:我目前正在从事一个 MS Access 数据库项目(一家小公司的客户关系管理),其中一项任务是压缩 docx 文件以发送给客户,并使用一定的密码加密.

在触发 docx 文件的 zip 打包的 VBA 过程中,我调用 WinRAR 如下:

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

-afzip 说:“创建一个 zip 文件(而不是 rar 文件)

-ep 表示:不包含源文件的路径,即直接将文件放入zip文件夹

WinRAR 帮助中的“命令行”部分提供了此类开关的完整列表。

于 2015-09-17T19:29:46.170 回答
0

x 将其提取为 E:\Testing\Builds\CCBuilds2\Testing\Builds\CCBuilds\,因为您在声明源时使用的是完整路径。使用 -ep1 或将默认工作目录设置为 E:\Testing\Builds。

需要使用 -ep1 ,但这有点棘手。
如果您使用:

Winrar.exe 一个 output.rar 输入路径
Winrar.exe 一个 E:\Testing\Builds\CCBuilds.rar E:\Testing\Builds\CCBuilds

它将包括声明的输入路径:

E:\Testing\Builds\CCBuilds -> E:\Testing\Builds\CCBuilds.rar:
Testing\Builds\CCBuilds\file1
Testing\Builds\CCBuilds\file2
Testing\Builds\CCBuilds\folder1\file3
...

正如您所提到的,最终将被解包:

E:\Testing\Builds\CCBuilds2\Testing\Builds\CCBuilds\

有两种使用 -ep1 的方法。

如果你想要简单的路径:

E:\Testing\Builds\CCBuilds\

提取为:

E:\Testing\Builds\CCBuilds2\CCBuilds\file1
E:\Testing\Builds\CCBuilds2\CCBuilds\file2
E:\Testing\Builds\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\Builds\CCBuilds\file1
E:\Testing\Builds\CCBuilds\file2
E:\Testing\Builds\CCBuilds\folder1\file3
...

存档内部将如下所示:

文件1 文件 2 文件

1\文件 3
...

提取时将如下所示:

E:\Testing\Builds\CCBuilds2\file1
E:\Testing\Builds\CCBuilds2\file2
E:\Testing\Builds\CCBuilds2\folder1\file3
...

无论如何,这是两种方法 -ep1 可用于排除包含或不包含包含文件的文件夹(基本文件夹/或基本路径)的基本路径。

于 2019-05-08T06:32:54.667 回答