1)我有一个名为CCBuilds的文件夹,其中包含此路径中的几个文件 - > E:\测试\构建\ 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”命令或使用上下文菜单中的Extract),unrared文件夹包含完整路径: 即:提取E:\ Testing \ Builds \ CCBuilds.rar - > E:\测试\构建\ CCBuilds2 \测试\构建\ CCBuilds \<>
我希望它是这样的: E:\测试\构建\ CCBuilds2 \ CCBuilds \<>
如何在添加rar / extract回来时避免这种完整路径持久性。任何帮助表示赞赏。
答案 0 :(得分:18)
使用-ep1开关。
更多信息:
-ep =文件被添加到存档而不包括路径信息。可能导致存档中存在多个文件 同名。
-ep1 =不要在归档中存储在命令行输入的路径。从名称中排除基本文件夹。
-ep2 =将路径扩展为完整。存档时存储完整的文件路径(驱动器号和前导反斜杠除外)。
(来源:http://www.qa.downappz.com/questions/winrar-command-line-to-add-files-with-relative-path-only.html)
答案 1 :(得分: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帮助的“命令行”部分提供了此类开关的完整列表。
答案 2 :(得分: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 -ep1 E:\ Testing \ Builds \ CCBuilds.rar E:\ Testing \ Builds \ CCBuilds
存档中的文件如下所示:
CCBuilds \ file1
CCBuilds \ file2
CCBuilds \ folder1 \ file3
...
或者您可以使用ep1来添加文件和文件夹结构,并在递归的帮助下将基本文件夹除尽,并将基本路径定义为结构的内部路径:
Winrar.exe -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
...
档案库中的内容如下:
file1
file2
folder1 \ file3
...
提取时的外观如下:
E:\ Testing \ Builds \ CCBuilds2 \ file1
E:\ Testing \ Builds \ CCBuilds2 \ file2
E:\ Testing \ Builds \ CCBuilds2 \ folder1 \ file3
...
无论如何,这两种方法-ep1可用于排除有或没有包含文件的文件夹(基本文件夹/或基本路径)的基本路径。