Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Как удалить повторяющийся файл в архивах? (http://forum.oszone.net/showthread.php?t=349255)

Medvedoc 22-07-2021 14:02 2962637

Как удалить повторяющийся файл в архивах?
 
Добрый день! Имеется список архивов, в каждом из которых повторяется один файл readme.txt
Как можно автоматически удалить во всех архивах данный файл?

Medvedoc 22-07-2021 17:15 2962649

Имеется в виду, что имеется папка, в которой лежат файлы архивов. В каждом из этих архивов есть одинаковый файл, который и необходимо убрать в автоматическом режиме.

megaloman 22-07-2021 17:26 2962650

Цитата:

Цитата Medvedoc
имеется папка, в которой лежат файлы архивов »

Какой формат архивов? Какой архиватор допустим для использования? Что в архиве: файлы в папках и подпапках, или просто файлы без путей?

Sham 22-07-2021 17:28 2962651

примерно так
Код:



function Delete-From-Zip ([array]$paths) {
        begin {
                Add-Type -AssemblyName 'System.IO.Compression'
                $enum_fmode = [System.IO.FileMode]::Open
                $enum_zupdate = [System.IO.Compression.ZipArchiveMode]::Update
        }
        process {
                $zip = [string]$_
                try {
                        $fs = New-Object 'System.IO.FileStream' $zip, $enum_fmode
                        $arc = New-Object 'System.IO.Compression.ZipArchive' $fs, $enum_zupdate
                        $paths | foreach {
                                if ($entry = $arc.GetEntry($_)) {
                                        try { $entry.Delete(); $_ + ' deleted from ' + $zip }
                                        catch { Write-Warning ($_ + ' not deleted from ' + $zip) }
                                }
                                else { Write-Warning ($_ + ' not found in ' + $zip) }
                        }
                } catch {
                        Write-Warning ('can''t open ' + $zip)
                } finally {
                        if ($arc -ne $null) { $arc.Dispose() }
                        if ($fs -ne $null) { $fs.Dispose() }
                }
        }
}


'd:\1.zip', 'd:\2.zip' | Delete-From-Zip 'file\to\delete', 'another\file'


Medvedoc 22-07-2021 17:38 2962654

megaloman, формат архивов .zip
использую 7-zip в основном, но есть winRar
в каждом архиве лежит по 2 файла:
1. рандомный текст.txt
2. readme.txt

вот этот второй файл в каждом архиве автономно и нужно удалить

Sham, я так понимаю это на javascript написано? Просто файлы у меня локально лежат

megaloman 22-07-2021 18:03 2962659

Код:

@Echo Off
cls
        Set "BoxIn=Z:\Box_In"
        Set "Mask=*.zip"
        Set "FileDel=readme.txt"

        Set "Arc="C:\Program Files\WinRAR\WinRAR.exe" D"

        Pushd %BoxIn% &&(
                FOR /F "usebackq delims=" %%i IN (`2^>nul Dir "%Mask%" /B /A:-D`) DO (
                        %Arc% "%%i" "%FileDel%"
                )
                Popd
        )
Pause
Exit /B


Medvedoc 22-07-2021 18:11 2962660

megaloman, не срабатывает. Положил батник в ту же папку где и архивы, но никакого результата.
Z:\Box_In - я так понимаю путь где лежат архивы?

а не, сработало =) просто путь неправильно был прописан =) Большое спасибо


Время: 08:28.

Время: 08:28.
© OSzone.net 2001-