Как извлечь все изображения из zip-файлов в каталог с именами zip? - PullRequest
0 голосов
/ 15 мая 2018

У меня есть около 300 zip-файлов, и я хочу извлечь их изображение в папку, в которой существует zip-файл, а некоторые из них имеют 2 или 3 изображения, а затем изменить свое имя на имя zip в папке с именем zip

До:

C:\zips\Myfile.Zip\word\media\image.Png
C:\zips\Myfile.Zip\word\media\image1.Png
C:\zips\hdh\Product.Zip\word\media\image.png
C:\zips\hdh\Product.Zip\word\media\image1.png

После:

C:\zips\Myfile\myfile.Png
C:\Myfile\myfile1.png
C:\zips\hdh\Product\product.Png
C:\zips\hdh\Product\product1.png

Мой код для извлечения всех файлов изображений в имени папки zip:

for /R %%I in ("*. Zip") do ( 7z e "%%~fI" "word/media/*" -o"%%~dpnI" )

Мой пакетный код, чтобы переименовать все изображения в направлении, где они находятся, он работает только для почтовых индексов, которые имеют только одно изображение, если файл ZIP имеет более одного изображения, он просто меняет файл изображения, а не другие изображения, и я хотите изменить другие изображения на "имя папки" 1.png и ....:

For /r %%F in (*.jpeg) do @for %%A in ("%%F\°°") do ren "%%F" "%%~nxA.jpeg"

For /r %%F in (*.png) do @for %%A in ("%%F\°°") do ren "%%F" "%%~nxA.png"

1 Ответ

0 голосов
/ 15 мая 2018

загрузите zipjs.bat в том же каталоге, что и этот скрипт:

:::::::::::

@echo off

set "zipDir=C:\zips\"
set "inZipPath=\word\media\"
set "picFormats=bmp png jpg gif tiff bpm"

break>"pic.list"
for %%a in ("%zipDir%\*.zip") do (

    rem echo %%a
    (call zipjs.bat list -source "%%~fa" -flat yes | find /i "%inZipPath%" | findstr /i /e "%picFormats%")>>"pic.list"
)

setlocal enableDelayedExpansion

    set "prevZN="
    set "counter=1"
    for /f "usebackq tokens=* delims=" %%f in ("pic.list") do (
        set "full_path=%%f"
        set "tfp=!full_path:\word\media\=?!" 
        for /f "tokens=1,2 delims=?" %%a in ("!tfp!") do (
            echo %%a ### %%b
            for %%# in ("%%a") do set "zipname=%%~n#"
            for %%# in ("%%a") do set "zipdir=%%~dp#"
            for %%# in ("%%b") do set "filename=%%~b"
            for %%# in ("%%b") do set "fileext=%%~xb"
        )

        if "!zipname!" NEQ "!prevZN!" (
            set counter=1
            set prevZN=!zipname!
        ) else (
            set /a counter=counter+1
        )
        call zipjs.bat unZipItem -source "!full_path!" -destination "!zipdir!\temp" -keep yes -force yes
        ren "!zipdir!\temp\!filename!" "!zipname!!counter!!fileext!"
        move "!zipdir!\temp\!zipname!!counter!!fileext!" "!zipdir!"
    )

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