我正在创建一个备份实用程序,用于压缩文本文件中列出的所有文件。我使用 MS ACCESS 作为前端,使用 7-Zip 进行压缩。这些是我正在使用的命令:
7zG.exe a c:\Backup\backup.zip
@c:\temp\tmpFileList.txt
所有文件都在没有路径的情况下被压缩。有没有办法在 zip 文件中包含每个文件的路径?然后,当backup.zip
提取文件时,文件将恢复到其原始文件夹结构。
谢谢
我正在创建一个备份实用程序,用于压缩文本文件中列出的所有文件。我使用 MS ACCESS 作为前端,使用 7-Zip 进行压缩。这些是我正在使用的命令:
7zG.exe a c:\Backup\backup.zip
@c:\temp\tmpFileList.txt
所有文件都在没有路径的情况下被压缩。有没有办法在 zip 文件中包含每个文件的路径?然后,当backup.zip
提取文件时,文件将恢复到其原始文件夹结构。
谢谢
在这个 7-zip 论坛帖子中,许多人表达了他们对这个功能的渴望,7-zip 的开发人员 Igor 指出了题为“如何将文件的完整路径存储在存档中?”的常见问题解答问题。以达到类似的结果。
简而言之:
C:\
,一个用于D:\
等)cd /d C:\
)C:\Foo\Bar
变得Foo\Bar
)7z a archive.7z @filelist
使用这个新文件列表像以前一样执行7-Zip 的命令行程序是 7z 或 7za。这是有关可用选项的有用帖子。-r(递归)选项存储路径。
我没有对此进行研究,但是从臀部射击我会说他们在便携式设备中放弃了命令行支持。人们在便携式应用程序中没有做太多命令行操作的原因是操作系统(在您的情况下是 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:对死灵感到抱歉,但我认为它需要一个更直接的答案来解释原因(即使它只是推测性的)。
试试这个。它对我有用。7z.exe ad:\newFileName.7z "d:\ExistingFile.txt"
打开 cmd,如果你已经安装了 7zip 应用程序,那么试试这个。在命令提示符下,它会像 c:\programs and files\7zip\7z.exe ad:\newFileName.7z "d:\ExistingFile.txt"
7-Zip 需要列表文件中的相对路径,否则它将只存储文件名,导致文件名重复错误。
假设您的列表包含完整路径名:
如果您的列表文件具有相对于另一个文件夹的路径,则您应该从该文件夹运行 7Z。
更新:我从上面的另一篇文章中注意到,新的 7-Zip 有一个不需要上述步骤的 -spf 选项。尚未对其进行测试,但我的步骤适用于没有此选项的早期版本。
由于 7-zip 版本9.25 alpha有一个新的-spf
开关,可用于存储完整的文件路径,包括存档的驱动器号。
7zG.exe a -spf c:\BAckup\backup.zip @c:\temp\tmpFileList.txt
现在应该可以正常工作了。
而不是选项a
使用选项x
,这将创建目录但仅用于提取,而不是压缩。