Powershell:ExtractToDirectory未创建文件夹

Powershell:ExtractToDirectory未创建文件夹,powershell,directory,unzip,Powershell,Directory,Unzip,我有一个具有以下结构的zip文件:test.zip->Mark->Today->***(每个文件) 当我提取它时,结果是:test(folder)->Mark(folder)->Today->*.*(每个文件) 如何获取此结构:Today(文件夹)->*.*(每个文件) 我的意思是,我试图避免前两个文件夹的创建 最好是只提取文件而不提取文件夹 function Unzip { param([string]$zipfile, [string]$out) [System.IO

我有一个具有以下结构的zip文件:
test.zip->Mark->Today->***(每个文件)

当我提取它时,结果是:
test(folder)->Mark(folder)->Today->*.*(每个文件)

如何获取此结构:
Today(文件夹)->*.*(每个文件)

我的意思是,我试图避免前两个文件夹的创建

最好是只提取文件而不提取文件夹

 function Unzip
 {
     param([string]$zipfile, [string]$out)
     [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $out)
 }
解压Test.zip$testPath

编辑: 对不起,我在这个问题上犯了一个错误。
正确的问题是:如何仅提取文件或最后的文件夹(今天)。我想知道我是否需要一个临时文件夹,或者是否有这样的选项,但是阅读文档似乎不需要,这里是如何继续只提取文件,而不考虑文件夹结构

Add-Type -AssemblyName 'System.IO.Compression.FileSystem'

function Unzip {
    param([string]$zipfile, [string]$out)


    $Archive = [System.IO.Compression.ZipFile]::OpenRead($zipfile)
    Foreach ($entry in $Archive.Entries.Where( { $_.Name.length -gt 0 })) {
        [System.IO.Compression.ZipFileExtensions]::ExtractToFile($entry, "$out\$($entry.Name)")
    }
    $Archive.Dispose()
}

# Example 
Unzip -zipfile 'Z:\_tmp\impfiles\1.zip' -out 'Z:\_tmp\impfiles'

当然,现在您已经放弃了文件夹结构,如果需要的话,您必须实施一些方法来处理文件名冲突的可能性(例如,如果您在两个不同的文件夹中有一个Readme.txt)

您忘记发布用于扩展存档的代码。是的,您的代码中一定有某些内容,因为
[System.IO.Compression.ZipFile]::ExtractToDirectory
方法在您指定的目录中提取,这意味着如果您指定Mark文件夹,它将在那里而不是在任意测试文件夹中提取文件。虽然此方法保持了文件结构的完整性,但是如果您也希望删除Mark,那么ZipArchive类中的其他内容可能会有用,但不是ExtractToDirectory(参考ZipArchive:),我需要一些时间来研究。请不要关上邮局。感谢您不使用标准Powershell cmdlet有什么特殊原因吗。。。无需重新发明车轮。;-)我不知道:)我试过了。它有一个漂亮的文本图形,但我不知道如何只能提取最后一个文件夹或唯一的文件。没有选择,可能我必须搜索方法