我有大约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"
答案 0 :(得分:0)
在与此脚本相同的目录中下载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