我正在创建一个备份工具,用于压缩在文本文件中列出的所有文件。我使用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
被提取时,文件将被还原到它们原来的文件夹结构。
谢谢
C:\
上的文件,一个用于D:\
等)cd /d C:\
)C:\Foo\Bar
变成了Foo\Bar
)创建文件列表7z a archive.7z @filelist
与这个新的文件列表7-Zip的命令行程序是7z或7za。这里有一篇有用的文章介绍了可用选项。-r(递归)选项存储路径。
http://www.redfernplace.com/software-projects/patheditor/ -- 一个好的路径编辑器(down),如果你有很多路径信息(20+), 阅读起来会变得困难。
http://www.softpedia.com/get/System/System-Miscellaneous/Path-Editor.shtml -- 路径编辑器的替代来源。
不建议为临时“便携式”驱动器修改系统路径,但可以手动执行以下操作:
set path=%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 a d:\newFileName.7z "d:\ExistingFile.txt"
打开命令提示符,如果您已经安装了7zip应用程序,请尝试以下步骤。在命令提示符中,它会像这样:c:\programs and files\7zip\7z.exe a d:\newFileName.7z "d:\ExistingFile.txt"
自从7-zip版本9.25 alpha以来,有一个新的-spf
开关可用于将包括驱动器号在内的完整文件路径存储到归档文件中。
7zG.exe a -spf c:\BAckup\backup.zip @c:\temp\tmpFileList.txt
现在应该可以正常工作了。
@ECHO OFF
REM Cycle Through all of the directories in the current folder
for /D %%d in (*) do (
REM Change to the directory
pushd %%d
REM Make the destination directory.
mkdir "Z:\%%d"
REM Cycle Through all Subdirectories
for /D %%b in (*) do (
REM Zip up all subdirectores, and put it in the destination.
7z -r a "Z:\%%d\%%b.zip" %%b
)
popd
)
7-Zip希望在列表文件中使用相对路径,否则它将仅存储文件名,导致重复文件名错误。
假设您的列表包含完整路径名:
如果您的列表文件具有相对于另一个文件夹的路径,则应从该文件夹运行7Z。
更新:我注意到从上面的另一篇文章中,新的7-Zip具有不需要上述步骤的-spf选项。尚未测试,但我的步骤适用于没有此选项的早期版本。
不要使用选项a
,而是使用选项x
,这将创建目录,但仅用于提取,而不是压缩。