问题标签 [7zip]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
24077 浏览

batch-file - 遍历批处理文件中的文件夹和文件?

这是我的情况。一个项目的目标是将一些附件迁移到另一个系统。

这些附件将位于父文件夹中,比如说“ Folder 0”(请参阅​​此问题的图表以获得更好的理解),它们将被压缩/压缩。

我希望像这样调用我的批处理脚本:

7za.exe用作命令行提取工具。

我希望我的批处理脚本做的是遍历“ Folder 0”的子文件夹,并将所有包含的 ZIP 文件提取到它们各自的文件夹中。

提取的文件必须与其各自的 ZIP 文件位于同一文件夹中。因此,“ File 1.zip”中需要“”中包含的文件Folder 1,依此类推。

我已经阅读了FOR...DO关于Windows XP Professional Product Documentation - Using Batch Files.

这是我的脚本:

我想在调用 7za.exe e %zippedFile 进行文件提取之前,我还需要更改实际目录,但我无法弄清楚这个批处理文件的方式(通过我知道命令行中的方式,即使我知道它是相同的指令“cd”)。

编辑#1

我已经收到了一些关于ServerFault同一问题的提示。请参阅此链接中的答案。

但是,它是从根目录 (C:) 中提取的,而不是从给定的参数文件夹中提取的。

有人有想法吗?

编辑#2

批处理脚本似乎无法充分处理包含空格字符的文件夹和文件名。谁能证实我的想法?

编辑#3

我需要它是完全递归的,因为我不知道将使用它的目录结构。

编辑#4.a

有了@aphoria 的解决方案,我就快到了!唯一的问题是,假设它只需要File5.zip检索文件名来获取File5,创建一个子文件夹File5并提取File5.zipFile5子文件夹,然后,它想在其中创建一个File5子文件夹Folder 1,它应该在其中创建File1子文件夹,以坚持我的示例.

编辑#4.b

根据需要,这是当前的代码:

任何人的想法?

我的猜测是它一次挖掘一个目录层次结构。这是交易。假设我们有一个Folder Ain Folder 1(Folder 1\Folder A),然后,它从 搜索,然后Folder 1返回Folder 5% Folder 1\Folder Asubfolder% 变量的最后一个值。

感谢任何人的帮助。

0 投票
1 回答
1902 浏览

objective-c - 如何在 C / Objective-C 中传递密码以解码 LZMA (7zip) 加密存档?

有谁知道如何在 LZMA SDK 中传递密码来解码功能?

0 投票
3 回答
9138 浏览

iphone - iPhone (iOS) 的 7-ZIP (LZMA) 压缩

有人知道是否有适用于 iPhone (iOS) 的 7-Zip (LZMA) 实现吗?

0 投票
5 回答
53096 浏览

c# - 使用 7zip 压缩文件的示例 C# .net 代码

我在我的机器上的 C:\Program 文件中安装了 7-zip 4.65。我想在 C# 代码中使用它来压缩文件。文件名将由用户动态提供。任何人都可以提供有关如何在 C# 代码中使用 7zip 的示例代码吗?

0 投票
2 回答
1109 浏览

lgpl - 从专有应用程序中调用 7-Zip 的许可影响

我想在我的专有应用程序中使用 7-Zip。

7-Zip 是 LGPL

考虑到在我的应用程序中,我通过它的命令行界面调用,使用system()如下:system( "7-Zip -blah -blah" );

  1. 如果我以这种方式使用 7-Zip,我是否有 LGPL 规定的任何义务?
  2. 如果我想将 7-Zips 的 7z.dll 和 7z.exe 与我的应用程序一起分发,以便用户无需单独安装 7-Zip,我是否有任何 LGPL 义务?

谢谢

0 投票
2 回答
18369 浏览

java - 如何在 Android 中解压缩 7zip 存档?

我有一个7zip存档,其中包含数百个文件,这些文件分为不同的目录。目标是从 FTP 服务器下载它,然后在手机上提取它。

我的问题是7zipSDK 不包含很多内容。我正在寻找有关解压缩 7z 文件的示例、教程和片段。

(通过解压Intent只是次要选项)

0 投票
1 回答
5247 浏览

java - 在 Java 中解压缩包含多个文件和目录的 7zip 存档

我想用 Java 解压缩一个包含多个文件和目录的 7zip/lzma 存档。我尝试使用官方的 7zip SDK,但我失败了,因为我的编程技能对于这个主题并不那么先进。但是,我喜欢一些使 Java 支持更容易的库,谈到 LzmaOutputStream/LzmaInputStream - 但是我不知道如何使用这些“流”来解压缩多文件存档。我被困住了。

0 投票
2 回答
4790 浏览

java - 7Zip在JAVA中的实现

我从 7zip 网站下载了 LZMA SDK,但令我失望的是它只支持压缩和解压缩,不支持 AES 加密。有谁知道在 JAVA 中是否有完全使用 AES 加密的 7zip 实现?谢谢。

问候,卡尔。

0 投票
1 回答
3291 浏览

compression - 我们应该使用什么压缩格式;我们应该放 DEFLATE (.zip) 休息吗?

随着大多数 Linux 发行版放弃 gzip 和 bzip2 以支持 LZMA2 来压缩它们的包,以及许多平台的许多开源实现,我想知道:我们不应该让 DEFLATE 和.zip格式(不幸的是,它被一遍又一遍地混为一谈)休息吗?并继续使用其他现代方式分发我们的(源)包?

GNU tar 支持J使用xz(另一个 LZMA2 压缩器)作为过滤器的开关:

但是,我倾向于使用7z(p7zip 实现),它是7zaLinux 下用于创建档案的朋友。在创建档案时,我仍然使用“避免 tar-bombs”范例,这意味着档案中有一个目录,因此从命令行提取不会导致当前目录中的文件溢出(这是Linux 上的标准操作方式tar,例如,但在 Windows 下这似乎不是一件值得做的事情)。

无论如何,似乎由于在包中的使用(例如 Fedora RPM 和 Ubuntu DEB),以及像tar. 它具有很高的压缩率(在标准设置中远远超过 bzip2)并且速度也非常快(压缩比 gzip 稍慢,

我自己做了一些基准测试,但我想把重点放在一些更广泛的基准测试上:

现在,您会注意到,作为参考实现的7-zip并没有出现在首位。然而 Freearc 使用它自己的.arc格式,它不是真正的跨平台能力,并且与 80 年代的旧ARC 不兼容。nanozip 不是开源的,这是一种低迷,但重要的是算法,而不是存档器!

无论如何,现在使用 7-zip 及其衍生实现 ( xz ) 的性能不再是问题,而且压缩率不言自明,我觉得将我的源包分发为.7z档案.tar.xz。但是,我面前有两个障碍,我似乎无法克服:

  1. WinRAR 的倡导者。不要误会我的意思,我对 WinRAR 或其用户没有怨恨,只是我不能在 Linux 上真正制作 RAR,而且没有必要,因为我们有免费的 LZMA2 工具。正如我所说,自从成为分发包的组成部分以来,它可以在任何现代分发中使用。由于制作 a.7z比 a需要大约相同的时间,.rar而且 LZMA2 文件通常更小,我不明白为什么不使用 7-zip。

  2. tar 档案必须是 zip 或 bzip2,没有例外。这是一个很难的。为什么这么多人对 gzip 印象深刻?甚至 bzip2 在大多数情况下也没有太多使用。诚然,gzip 速度很快,对于按需压缩(例如在 Web 服务器中)或创建大型镜像备份时,这是一个很好的选择。但是分发软件呢?LZMA2非常不对称。虽然压缩需要时间,但解压缩速度非常快。

好的,现在我的问题来了:

既然 LZMA2 可以说是下一个更好的压缩算法,为什么人们不跳上火车呢?为什么人们仍然使用WinRAR,它是专有的,压缩比更差,并且没有移植到Linux(除了unrar,但你显然不能用它创建档案)。为什么 Tarball 仍然大多是 gzip 压缩的?

有没有办法说服人们转向更新、可靠的归档格式,这不仅是跨平台的,而且是免费的?当我给某人一个以 结尾的文件时.7z,他们往往不知道如何处理它,这会改变吗?

哦,这是我自己做的小基准测试。我到处使用默认设置:

以字节为单位的大小;文件名Archiver_Format_Algorithm.Extension:)

填充集由包含 DOS 安装的磁盘映像组成:

(大小以字节为单位)

0 投票
2 回答
12107 浏览

c++ - 如何使用 7z sdk 提取 rar/zip 文件 (C++)?

我正在尝试编写一个小型的跨平台漫画书阅读器(Qt / C++)。我不在乎外面已经有什么,我知道有一些。

我的问题是我需要阅读漫画书格式,这些格式被重命名为 rar 和 zip 文件。

文档非常...不存在?任何人都没有“你好档案”文件。我该如何设置?

如果它可以更容易地假设我在任何特定的操作系统上,那么就这样做。我不断在 Kubuntu、OSX 和 Win7 之间切换以进行开发工作。