1

我在 Win10 中以两种方式从目录创建 zip 文件。

第一种方法使用“右键单击...发送到...压缩(压缩)文件夹”

第二种方法使用 Powershell Compress-Archive。我想使用 Powershell 自动化这个过程。

zip 文件是要导入 Arduino IDE 的库。

第一种方法将正确导入 Arduino IDE。第二种方法无法正确导入。

现在在你说这是一个 Arduino 问题之前,请继续阅读。

因此,为了确保文件相同,我使用 Powershell 为这两个文件生成了 MD5 校验和。令我惊讶的是他们是不同的!

我发现的唯一区别是创建的 zip 文件的大小。 它们是从相同的源文件创建的。

为什么它们不同? 我可以通过文件资源管理器中的“双击并全部提取”手动解压缩这两个文件

感谢您的任何建议/帮助。约翰。

这是powershell脚本的输出......

目录:C:\file1 模式 LastWriteTime 长度名称
---- ------------- ------ ----
-a---- 05/16/2020 17: 18 1948 t_OS.zip

算法:MD5 哈希:19249C2BB9B50E827A77F7A2952EFF6D 路径:C:\file1\t_OS.zip

目录:C:\file2 模式 LastWriteTime 长度名称
---- ------------- ------ ----
-a---- 05/16/2020 19: 23 1724 t_OS.zip

算法:MD5 哈希:2BF7B111F54FC0555E6CA64719AD350F 路径:C:\file2\t_OS.zip

...

#
# sourceFiles are what I need to be zipped. It contains the 
# directory t_OS and I need to create t_OS.zip
#
$sourceDir   = "C:\sourceFiles" 
$sourceFiles = "C:\sourceFiles\t_OS"
# file1 zip was created by right-clicking on the directory t_OS
# in the $sorceDir and selecting Send To, then 
# Compressed (zipped) folder.  This file was then moved to...
# 
$file1 = "C:\file1\t_OS.zip"

# file2 zip is created by powershell using Compress-Archive below.
$file2 = "C:\file2\t_OS.zip"

Get-ChildItem -LiteralPath $sourceDir -Name -Recurse

If (Test-Path $file2)   {Remove-Item $file2}

Compress-Archive -DestinationPath $file2 -CompressionLevel Fastest -Path $sourceFiles

Get-ItemProperty -LiteralPath $file1
Get-FileHash -Path $file1 -Algorithm MD5

Get-ItemProperty -LiteralPath $file2
Get-FileHash -Path $file2 -Algorithm MD5

...

4

1 回答 1

0

两个 zip 文件大小不同的事实可能有多种原因。这里有几个

  1. 如前所述,这两个 zip 文件可能使用不同的压缩算法。鉴于生成的 zip 文件的大小很小,可能一个正在存储压缩的数据,而另一个正在存储未压缩的数据。
  2. 多年来,已向 zip 文件添加了许多扩展,这些扩展添加了更准确的时间戳等内容。这些为生成的 zip 文件添加了更多字节,但它们不应阻止文件被解压缩。我相信在 Windows 10 上“右键单击”创建的 zip 文件不使用任何这些扩展名。不确定Powershell。

您可以访问 Linux 设置吗?上面有一些工具可以分析 zip 文件的结构。

另外,你能分享你用来创建 zip 文件的 Powershell 命令行吗?

编辑

在您的 Ubuntu 设置上,首先检查unzip对这两个文件的看法

unzip -t t_OS.zip

如果unzip发现问题,它将报告它。

zipdetails如果这对两个 zip 文件都不起作用,并使用结果更新您的问题。

zipdetais -v t_OS.zip

如果您没有zipdetailsUbuntu 设置,请从此处获取

于 2020-05-17T19:31:57.313 回答