Удалить несколько файлов из нескольких ZIP-архивов - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть список файлов, которые мне нужно удалить из ежемесячных файловых архивов за несколько лет. в текстовом файле содержится около 400+ имен файлов и около 5 лет ежемесячных архивов, отсортированных по папкам по годам.

мой скрипт выполняет двойной цикл, ищет каждый файл в каждом архиве и удаляет его, но это очень медленно. Я ищу любые предложения о том, что я могу сделать, чтобы улучшить свой подход. спасибо!

set-alias rar "C:\Program Files\7-Zip\7z.exe"

    $archives = get-childitem 'D:\Archive Data\APP_P\website\Document\exports\Exports Archive\Archive\2014exports'   -Recurse
    write-host $archives
    Get-Alias rar

    foreach ($archive in $archives ) {

    write-host $archive.Mode

    $exports = Get-Content C:\scripts\ScottTrade_cleanup.txt.txt
        foreach ($export in $exports){
        write-host $export
       rar d $archive.FullName $export -r

        }

    } 

1 Ответ

0 голосов
/ 12 ноября 2018

Таким образом, у вас есть небольшая проблема с производительностью

$exports = Get-Content C:\scripts\ScottTrade_cleanup.txt.txt

Переместите это вне циклов

Большая проблема заключается в том, что вы перезагружаете zip-файл для каждого файла, который хотите удалить.Нам нужно это исправить.Возьмите ваш файл, представляющий собой список файлов, избавьтесь от внутреннего цикла и выполните следующее:

rar d $archive.FullName -r @FullListFilePathNameExtension

Моим первым решением было использование ключа включения (-i) для удаления, но Windows этого не делает.Поддержка командной строки более 8 тыс.

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