如何在 Windows 上从 macOS 解压缩 zip 文件,并且 Mac 制作的 Zip 中的“__MACOSX”文件夹是否是查找 Zip 内容的正确位置?

如何在 Windows 上从 macOS 解压缩 zip 文件,并且 Mac 制作的 Zip 中的“__MACOSX”文件夹是否是查找 Zip 内容的正确位置?

有人用他们的 Mac 笔记本电脑给我发送了一堆 PDF 文件,以 Zip 格式。现在我正在尝试提取这些 PDF 文件。

我在 Windows 10 上,我可以提取一个文件夹__MACOSX,里面有一个包含多个 PDF 文件的文件夹,但是当我以二进制形式看到这些文件时,它们实际上并不是正确的 PDF 格式。

在文件的开头附近,我看到一些纯文本插入,例如ATTRcom.dropbox.attrs 显然一些二进制插入,可能是那些属性的值。

这是 Zip 的怪癖吗?还是这些文件本来就已损坏,比如发件人从 Dropbox 下载它们时?还是我找错了地方?

该文件夹不是__MACOSX我应该寻找文件的地方吗?


笔记:我的问题不是理论性的,例如__MACOSX其目的是什么以及为什么 Apple 不使用标准文件格式。

我的问题纯粹是实际的:我急需他们发送给我的 PDF 文件,那么我如何才能以可用的形式提取它们(不会被那些无用的“属性”插入破坏)(或者我如何才能删除那些插入来修复 PDF 文件?)

我可以想象解决方案的一部分是从某人那里借一台 Mac 笔记本电脑并在那里打开 Zip,但我不知道如何在 Mac 上打开它。或者,如何将它们传输回来——也许用 USB 记忆棒?

请提供简单易懂的分步说明。如果我知道该怎么做,我就不会问了。

答案1

您可能希望将 zip 精简为仅包含 Windows 内容,因为__MACOSXWindows 上不需要该分支。

请注意,此 cmd 脚本不会进行广泛的检查,而只是您自己增强功能的模板。您应该在工作文件夹中保存一份 MAC 文件的工作“副本”,以避免出现问题并根据需要调整结果。

这里使用拖放示例。脚本位于一个文件夹中,而位于VBExample.zip其自己的文件夹中。我们可以看到其子文件夹,但它们尚未解压。

在此处输入图片描述

前:
在此处输入图片描述

之后,zip 文件被备份,并且不需要 fork 就可以减小文件大小,另外还额外保留了解压后的内容(如果你愿意可以删除):
在此处输入图片描述

此脚本“零保证”适用于所有 Mac zip 文件。它适用于更常见的变体。始终在您获得的副本上使用。然后根据需要删除工作副本。

if not exist "%~dpn1.zip" goto EOF
pushd "%~dp1"

copy "%~dpn1.zip" "%~dpn1-backup.zip"
tar -xf "%~dpn1.zip"
rd /s /q __MACOSX
tar -a -cf "%~dpn1.zip" "%~n1\*.*"

if not exist "%~dpn1.zip" echo FAILED & pause
REM [optionally remove the unpacked folder] RD /S /Q "%~n1"

:exit
popd

失败的原因可能包括文件名与文件夹名称不匹配,或者新的 zip 文件太小(1 KB)。 在此处输入图片描述

在这种情况下,我们可以通过发送到正确命名的 zip 文件夹轻松重建。 在此处输入图片描述 在此处输入图片描述

或者确保外部 zip 名称反映内部文件夹名称。 在此处输入图片描述

相关内容