提取zip文件并连接提取的内容

时间:2017-06-15 08:31:55

标签: powershell

我有多个zip文件,我想解压缩并将其内容连接到一个文件。我不需要这些解压缩文件中的每一个,因此如果可能的话,它们永远不会被创建。

我需要在PowerShell中执行此操作,并且只能访问2.0版。

目前使用7zip执行解压缩。如果我在没有尝试连接输出的情况下进行解压缩,我最终会使用以下命令获取所有提取的文件。

<script type="text/javascript">
    $(function () {
        /*// Typeahead
            var a = $.parseJSON('<?php //echo json_encode( $groups); ?>');
$('#query').typeahead({        
        local: a
});*/
    });
</script>

尝试通过以下命令连接所有文件,但我仍然最终得到所有提取的文件,combined.txt文件包含重复的以下文本。请指教。谢谢。

# all the zip files (10000 of them)
$logs = Get-ChildItem $folders[$i] -filter "*$stake).zip" 

foreach ($log in $logs) {
    Write-Host $log
    & '7z' e $log
}

正在重复的文字

  

7-Zip [64] 16.04:Copyright(c)1999-2016 Igor Pavlov:2016-10-04

     

扫描驱动器以获取存档:1个文件,7796个字节(8 KiB)

     

提取存档:0000_0000_0000游戏日志(名称为86%赌注   25).ZIP    - 路径= 0000_0000_0000游戏日志(名称为86%赌注25).zip Type = zip物理尺寸= 7796

进一步澄清:

我有10000个zip文件。 在提取时,每个文件内容=&#34; Hello&#34;。

我想将所有这些文件内容连接成一个单独的文件。

因此单个文件内容将是 -

# all the zip files (10000 of them)
$logs = Get-ChildItem $folders[$i] -filter "*$stake).zip" 

foreach ($log in $logs) {
    Write-Host $log
    & '7z' e $log >> combined.txt
}

我想要的只是这个具有连接数据的单个文件。

1 个答案:

答案 0 :(得分:2)

需要提取AFAIK ZIP文件才能阅读。即使在ZIP浏览器的情况下,当你打开&#34;文件中的文件首先被提取到临时位置。

这基本上就是你需要做的事情:

$logs = Get-ChildItem $folders[$i] -filter "*$stake).zip"
New-Item -Name "Temp" -ItemType Directory
$output = @()

foreach ($log in $logs) {
    Write-Host $log
    & '7z' e $log -o"Temp" | Out-Null
    Get-ChildItem "Temp" | Foreach-Object {
        $output += Get-Content $_.FullName
        Remove-Item $_
    }
}

Remove-Item "Temp"

$output | Out-File "FullLog.txt"

这会遍历每个文件,将其解压缩(忽略7zip的输出,因为它仅提供信息),读取提取文件的内容然后删除它。之后它会清理并将总输出写入文件。