仅使用 7z 压缩文件而不保留路径

Posted

技术标签:

【中文标题】仅使用 7z 压缩文件而不保留路径【英文标题】:Compressing only files using 7z without preserving the path 【发布时间】:2012-05-25 11:31:55 【问题描述】:

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

如果我这样做了

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

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

谢谢

【问题讨论】:

【参考方案1】:

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

【讨论】:

是的,对于 *nixes 斜线应该是这样的。 非常感谢您的提示!它甚至可以在外部列表中指定文件路径时工作。在 Windows 上使用 7-Zip 16.04 测试。 感谢大家的反馈。我对“把点放在前面”是我在 *** 上的最佳答案这一事实感到非常有趣:-) 有人能解释一下为什么会这样吗?【参考方案2】:

给出完整路径。那应该行得通。不是当前位置的相对路径。 例如,我给出以下内容,我希望将 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 不同。

【讨论】:

+1 它适用于 Windows。我确实遇到了这个问题,而且这个解决方案确实有效。 添加完整路径需要您(很可能)进行查找。 Nicklay O. 提供的解决方案更方便。它只需要您在路径前添加一个点。 注:同7z manualdir1/dir2/*排除所有隐藏文件(如dir1/dir2/.htaccess)。【参考方案3】:

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

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

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

【讨论】:

为我工作(在命令提示符下,Windows 10)【参考方案4】:

正如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 *

【讨论】:

我在脚本中运行它并且不想更改目录。没有其他方法可以做到这一点吗? 您必须这样做,因为这就是 7z 的工作方式。使用您选择的 shell 中可用的目录推送/弹出工具或在生成的进程中运行 cd+7-zip 以避免更改目录影响整个脚本。 感谢您的创造性解决方案,但正如 Kathiravelu 指出的那样,提供完整路径就可以了。 如果您需要保留部分路径,这似乎是唯一的解决方案【参考方案5】:

这对我有用

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

cd /D "C:\Parent"

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

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

【讨论】:

以上是关于仅使用 7z 压缩文件而不保留路径的主要内容,如果未能解决你的问题,请参考以下文章

7z.001,7z.002这样的文件如何解压

linux下如何用7za命令将某个7z压缩包解压?

7z.dll解压缩

如何用WinRAR解压缩7z分卷文件

如何仅压缩文件夹内的文件而不压缩子文件夹?

如何用WinRAR解压缩7z分卷文件