将所有文件解压缩到一个文件中,而不创建其他文件

时间:2016-11-07 21:48:14

标签: powershell

我在2个文件夹中有大量的zip文件。每个文件夹中的每个zip文件都以诸如some100.zip,some200.zip,some300.zip之类的结尾命名。大约1000个zip文件以some100.zip结尾,依此类推。

我想进入每个文件夹,解压缩以some100.zip结尾的所有文件,并将解压缩的内容(我不希望/需要将解压缩产生的每个文件)连接到一个文件中。

我正在尝试对5个文件进行以下代码测试,但结果是以压缩文件名和每个文件夹中的解压缩文件命名的5个文件夹。我需要1个单独的文件,其中包含来自所有5个文件的连接数据。

$logList="Folder one", "Folder two";

for ($i=0; $i -lt $logList.length; $i++) {
    cd $logList[$i];

    $zips = Get-ChildItem "*.zip"
    foreach ($z in $zips) {
        Expand-Archive $z | Where-Object {$_ -match 'some100'} | Set-Content ('unzipped.txt')
    }

    cd ..
}

1 个答案:

答案 0 :(得分:0)

这样的东西?

$tempDir = "D:\TEMP\some100"
$destinationFile = "D:\TEMP\unzipped.txt"

$folders = @("Folder One", "Folder Two")

del $destinationFile -ErrorAction SilentlyContinue

$folders | %{
    $zips = Get-ChildItem  $_ -Filter *.zip

    $zips | %{
        if ($_.Name.EndsWith("some100.zip"))
            { Expand-Archive $_.FullName -DestinationPath $tempDir -Force }
    }
}

Get-Content "$($tempDir)\*" | Add-Content $destinationFile