11

我正在创建一个备份实用程序,用于压缩文本文件中列出的所有文件。我使用 MS ACCESS 作为前端,使用 7-Zip 进行压缩。这些是我正在使用的命令:

7zG.exe a c:\Backup\backup.zip
@c:\temp\tmpFileList.txt

所有文件都在没有路径的情况下被压缩。有没有办法在 zip 文件中包含每个文件的路径?然后,当backup.zip提取文件时,文件将恢复到其原始文件夹结构。

谢谢

4

7 回答 7

6

这个 7-zip 论坛帖子中,许多人表达了他们对这个功能的渴望,7-zip 的开发人员 Igor 指出了题为“如何将文件的完整路径存储在存档中?”的常见问题解答问题。以达到类似的结果。

简而言之:

  • 按卷分隔文件(一个列表用于 上的文件C:\,一个用于D:\等)
  • 然后对于每个卷的文件列表,
    1. chdir 到相应卷的根目录(例如,cd /d C:\
    2. 使用相对于卷的根目录的路径创建一个文件列表(例如,C:\Foo\Bar变得Foo\Bar
    3. 7z a archive.7z @filelist使用这个新文件列表像以前一样执行
    4. 使用完整路径提取时,请确保先 chdir 到相应卷的根目录
于 2012-04-29T07:04:14.563 回答
4

7-Zip 的命令行程序是 7z 或 7za。这是有关可用选项的有用帖子。-r(递归)选项存储路径。

于 2009-09-02T08:10:55.520 回答
1

我没有对此进行研究,但是从臀部射击我会说他们在便携式设备中放弃了命令行支持。人们在便携式应用程序中没有做太多命令行操作的原因是操作系统(在您的情况下是 Windows)要求将可执行文件添加到 %path% 包含列表中。

如果使用命令行实用程序不满足该要求,则相当乏味。

7z -a

将会

d:\portable\z7\z7 -ac:\to\archive\folder*.*

为所有内容输入它就是为什么 GUI 对诸如便携式应用程序之类的东西有意义,它(应用程序)可以记住它自己的位置并为你处理这些东西,如果你不能运行它,你就知道它没有附加。

如果您真的希望便携式应用程序包含它,尽管您始终可以安装完整版本并将所需的 7z.exe 拉出并将其放入便携式文件夹中,确保它与所需的 dll 一起。

确保已连接外壳后,您必须在敲击外壳时设置路径。

http://www.redfernplace.com/software-projects/patheditor/ - 一个好的路径编辑器(向下)如果你有很多路径信息 20+ 很难阅读。

http://www.softpedia.com/get/System/System-Miscellaneous/Path-Editor.shtml -- 路径编辑器的备用网络源

尽管手动通过以下方式修改临时“便携式”驱动器的系统路径是不可取的:

设置路径=%path%;"d:\portable\z7\";

当您运行 dos cmd.exe 或http://sourceforge.net/p/conemu/home/Home/

其他答案更好地解决了其他问题,我不打算尝试..

http://www.codejacked.com/zip-up-files-from-the-command-line/ -- z7 和 z7a 命令行使用的良好参考。

PS:对死灵感到抱歉,但我认为它需要一个更直接的答案来解释原因(即使它只是推测性的)。

于 2013-05-28T04:33:10.170 回答
1

试试这个。它对我有用。7z.exe ad:\newFileName.7z "d:\ExistingFile.txt"

打开 cmd,如果你已经安装了 7zip 应用程序,那么试试这个。在命令提示符下,它会像 c:\programs and files\7zip\7z.exe ad:\newFileName.7z "d:\ExistingFile.txt"

于 2018-04-12T11:39:07.273 回答
0

7-Zip 需要列表文件中的相对路径,否则它将只存储文件名,导致文件名重复错误。

假设您的列表包含完整路径名:

  • 编辑列表文件以删除驱动器前缀 C:\
  • 当您运行 7Z 以使用上述列表文件时,请确保您位于驱动器的根目录中。
  • 然后它将存储路径并且不会抱怨重复的名称。它需要列表文件中的相对路径。

如果您的列表文件具有相对于另一个文件夹的路径,则您应该从该文件夹运行 7Z。

更新:我从上面的另一篇文章中注意到,新的 7-Zip 有一个不需要上述步骤的 -spf 选项。尚未对其进行测试,但我的步骤适用于没有此选项的早期版本。

于 2017-08-25T05:20:34.990 回答
0

由于 7-zip 版本9.25 alpha有一个新的-spf开关,可用于存储完整的文件路径,包括存档的驱动器号。

7zG.exe a -spf c:\BAckup\backup.zip @c:\temp\tmpFileList.txt

现在应该可以正常工作了。

于 2017-06-20T06:05:42.003 回答
-1

而不是选项a使用选项x,这将创建目录但仅用于提取,而不是压缩。

于 2011-07-12T15:03:01.897 回答