在不保留路径的情况下仅使用7z压缩文件

时间:2012-05-25 11:31:56

标签: command-line 7zip

我使用7z命令行可执行文件来压缩文件,但我发现在添加到存档时,文件的路径会保留在存档中。

所以如果我这样做

7z a -tzip  myzip.zip dir1\dir2\*

归档myzip.zip将包含路径dir1 \ dir2。我不想要这个,而是我只希望将文件添加到zip文件而不保留路径。 我搜索了很多,但似乎没有找到任何方法这样做,也许我错过了一些明显的东西?

由于

5 个答案:

答案 0 :(得分:67)

只需在路径前添加一个点,即 7z a -tzip -r myzip.zip .\Relative\Dir\*

答案 1 :(得分:22)

给出完整的路径。这应该工作。不是当前位置的相对路径。 例如,我给出了下面的内容,我希望将man5文件夹中的文件存档。

$ 7z a -tzip myzip.zip /home/pradeeban/Desktop/man4/man5/*

zip只包含文件,没有目录。

然后我只给出了相对路径。它有拉链内的目录。

$ 7z a -tzip myzip.zip Desktop/man4/man5/*

尝试使用Linux(Ubuntu 12.04)。不确定这是否与Windows不同。

答案 2 :(得分:11)

我通过使用相对路径找到了一种方法:

7z a -tzip  myzip.zip %CD%\dir1\dir2\*

%CD%是获取Windows批处理文件中当前路径的方式,但也可以从命令行使用。有关Capturing the current directory from a batch file的更多信息。

答案 3 :(得分:3)

7-zip user FAQ中的相关问题所述,7z存储了相对于工作目录的路径,因此您需要先cd到所需的顶级目录进行存档,然后从此处运行7-zip。

cd dir1\dir2\
7z a -tzip  myzip.zip *

如果您从脚本运行它并且不想使用更改的目录影响它,请使用您选择的shell中提供的目录推送/弹出工具,或者在生成的进程中运行cd + 7-zip以避免影响整个脚本改变了目录。例如,使用Windows的开头是:

start /D dir1\dir2\ /wait 7z a -tzip  myzip.zip *

答案 4 :(得分:1)

这对我有用

考虑文件夹结构,如C:\ Parent \ SubFolders .....并且你想创建parent.zip,它将包含所有文件和文件夹C:\ Parent没有父文件夹[即它将从SubFolders开始... ..]

cd /D "C:\Parent"

"7z.exe" a Parent.zip "*.*" -r

这将在C:\ Parent

中创建Parent.zip