43

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

所以如果我这样做

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

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

谢谢

4

5 回答 5

88

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

于 2012-10-24T14:20:42.070 回答
32

给出完整路径。那应该行得通。不是当前位置的相对路径。例如,我给出以下内容,我希望将 man5 文件夹中的文件存档。

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

zip 仅包含文件,不包含目录。

然后我只给出了相对路径。它有目录,在 zip 里面。

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

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

于 2012-05-25T12:45:33.207 回答
14

我发现了一种使用相对路径的方法:

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

%CD% 是您在 Windows 批处理文件中获取当前路径的方式,但它也可以从命令行工作。有关从批处理文件中捕获当前目录的更多信息。

于 2012-09-17T20:58:50.237 回答
3

7-zip 用户常见问题解答中的相关问题所述,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 *
于 2012-05-25T11:44:08.403 回答
1

这对我有用

考虑像 C:\Parent\SubFolders 之类的文件夹结构.....并且您要创建 parent.zip 它将包含所有文件和文件夹 C:\Parent 没有父文件夹 [即它将从 SubFolders 开始.....]

cd /D "C:\Parent"

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

这将在 C:\Parent 中创建 Parent.zip

于 2016-06-07T18:13:25.197 回答