gpt4 book ai didi

csv - 如何使用 PowerShell 读取 zip 文件中的 csv 文件的内容

转载 作者:行者123 更新时间:2023-12-04 05:23:20 25 4
gpt4 key购买 nike

我有一个 zip 文件,其中包含几个 CSV 文件。如何在不使用 PowerShell 提取 zip 文件的情况下读取这些 CSV 文件的内容?

我一直在使用 Read-Archive Cmdlet 包含在 PowerShell Community Extensions (PSCX)

这是我到目前为止所尝试的。

$path = "$env:USERPROFILE\Downloads\"
$fullpath = Join-Path $path filename.zip

Read-Archive $fullpath | Foreach-Object {
Get-Content $_.Name
}

但是当我运行代码时,我收到此错误消息
Get-Content :指定路径 filename.csv 处的对象不存在,或已被 -Include 或 -Exclude 参数过滤。

但是,当我运行 Read-Archive $fullpath 时, 它列出了 zip 文件中的所有文件

最佳答案

有多种方法可以实现这一点:

1. 下面是一个使用 Ionic.zip dll 的例子:

clear
Add-Type -Path "E:\sw\NuGet\Packages\DotNetZip.1.9.7\lib\net20\Ionic.Zip.dll"
$zip = [Ionic.Zip.ZipFile]::Read("E:\E.zip")

$file = $zip | where-object { $_.FileName -eq "XMLSchema1.xsd"}

$stream = new-object IO.MemoryStream
$file.Extract($stream)
$stream.Position = 0

$reader = New-Object IO.StreamReader($stream)
$text = $reader.ReadToEnd()
$text

$reader.Close()
$stream.Close()
$zip.Dispose()

它按名称选择文件 (XMLSchema1.xsd) 并将其提取到内存流中。然后,您需要将内存流读入您喜欢的内容(在我的示例中为字符串)。

2. 在 Powershell 5 中,您可以使用 Expand-Archive ,见: https://technet.microsoft.com/en-us/library/dn841359.aspx?f=255&MSPPError=-2147217396

它会将整个存档提取到一个文件夹中:
Expand-Archive "E:\E.zip" "e:\t"

请记住,提取整个存档需要时间,然后您必须清理临时文件

3. 还有一种只提取 1 个文件的方法:
$shell = new-object -com shell.application
$zip = $shell.NameSpace("E:\E.zip")
$file = $zip.items() | Where-Object { $_.Name -eq "XMLSchema1.xsd"}
$shell.Namespace("E:\t").copyhere($file)

4. 还有一种使用原生方式的方法:
Add-Type -assembly "system.io.compression.filesystem"
$zip = [io.compression.zipfile]::OpenRead("e:\E.zip")
$file = $zip.Entries | where-object { $_.Name -eq "XMLSchema1.xsd"}
$stream = $file.Open()

$reader = New-Object IO.StreamReader($stream)
$text = $reader.ReadToEnd()
$text

$reader.Close()
$stream.Close()
$zip.Dispose()

关于csv - 如何使用 PowerShell 读取 zip 文件中的 csv 文件的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37561465/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com