Войти

Показать полную графическую версию : [решено] Сжать каждый файл в архив и оставить только те что уменьшились в размере


necros2k7
05-01-2021, 05:57
Привет. Вот такой костыль сделал из 2х батников. 1 вызывает другой, если подскажете как сделать это в 1м батнике буду благодарен + как оставить только архивы после сжатия размером меньше чем оригинал, язык реализации неважен.

1.bat -
2 *.db

2.bat -
@echo off
for /R %%i in (%1) do "с:\soft\7z\7z" a -mmt31 -t7z -m0=lzma2 -mx=9 -mfb=273 -md=1536m -ms=on "%%i.7z" "%%i"

DJ Mogarych
05-01-2021, 09:22
Powershell:

$folder = "C:\temp\test"
$dbs = dir "$folder\*.db"

foreach ($db in $dbs) {
& 'с:\soft\7z\7z.exe' a -mmt31 -t7z -m0=lzma2 -mx=9 -mfb=273 -md=1536m -ms=on "$folder\$($db.basename).7z" "$($db.fullname)" > $null
if ((Get-Item "$folder\$($db.basename).7z").Length -gt $db.Length) {
del "$folder\$($db.basename).7z" -Force -Confirm:$false
}
}




© OSzone.net 2001-2012