«Связать» папку (например, создать несжатый архив) из PowerShell - PullRequest
3 голосов
/ 22 марта 2011

Я делаю ночное резервное копирование всех файлов, измененных в последний день, используя PowerShell.

Цель состоит в том, чтобы создать несжатый zip (или любой другой формат), который сгруппирует все в папке резервной копии в один файл, используя PowerShell.

Следующий код отлично работает для сжатия, но он слишком медленный:

function Add-Zip
{
    param([string]$zipfilename)

    if(-not (test-path($zipfilename)))
    {
        set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) 
        (dir $zipfilename).IsReadOnly = $false  
    }

    $shellApplication = new-object -com shell.application
    $zipPackage = $shellApplication.NameSpace($zipfilename)

    foreach($file in $input) 
    { 
        $zipPackage.CopyHere($file.FullName)
        Start-sleep -milliseconds 1000
        #500 milliseconds was too short.... 
    }
}

Есть идеи?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 22 марта 2011

Я бы рекомендовал использовать powershell вместе с 7-Zip Командная строка. 7-Zip имеет опцию командной строки , которая позволяет без сжатия.

-mx0
4 голосов
/ 22 марта 2011

Расширения сообщества PowerShell имеют командлет Write-Tar, который может быть использован здесь.

0 голосов
/ 10 января 2014

Заимствуя от ответа Элда до другого вопроса , я придумал:

function ZipFiles( $zipfilename, $sourcedir )
{
   [Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")
   $compressionLevel = [System.IO.Compression.CompressionLevel]::NoCompression
   [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
        $zipfilename, $compressionLevel, $false)
}

Элд также говорит о своем решении, которое применимо и здесь:

Чистая альтернатива Powershell, которая работает с Powershell 3 и .NET 4.5 (если вы можете ее использовать):

В его ответе было указано NoCompressionвместо Optimal для уровня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...