Войти

Показать полную графическую версию : Как удалить повторяющийся файл в архивах?


Medvedoc
22-07-2021, 14:02
Добрый день! Имеется список архивов, в каждом из которых повторяется один файл readme.txt
Как можно автоматически удалить во всех архивах данный файл?

Medvedoc
22-07-2021, 17:15
Имеется в виду, что имеется папка, в которой лежат файлы архивов. В каждом из этих архивов есть одинаковый файл, который и необходимо убрать в автоматическом режиме.

megaloman
22-07-2021, 17:26
имеется папка, в которой лежат файлы архивов » Какой формат архивов? Какой архиватор допустим для использования? Что в архиве: файлы в папках и подпапках, или просто файлы без путей?

Sham
22-07-2021, 17:28
примерно так



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

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

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

megaloman
22-07-2021, 18:03
@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
megaloman, не срабатывает. Положил батник в ту же папку где и архивы, но никакого результата.
Z:\Box_In - я так понимаю путь где лежат архивы?

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




© OSzone.net 2001-2012