标题: [文件操作] 求教批处理如何把图片按照宽高比例分类? [打印本页]
作者: 盛世繁华 时间: 2022-12-11 00:28 标题: 求教批处理如何把图片按照宽高比例分类?
现在有一些各种格式的图片,需要按照横向、竖向、正方形不同的宽高比例,创建并分到当前目录下的不同的文件夹。也就是宽高比>1进横向文件夹,小于1进竖向文件夹,等于1的进方形文件夹。
bat能不能用来处理这个图片问题,当然能用powershell也行,感谢各位!!
作者: 77七 时间: 2022-12-11 01:58
本帖最后由 77七 于 2022-12-11 02:07 编辑
- @echo off
- cd /d "%~dp0"
- md "横向文件夹\"
- md "方形文件夹\"
- md "纵向文件夹\"
- for %%i in (*.jpg *.png *.bmp) do (
- setlocal enabledelayedexpansion
- for /f "tokens=2 delims=^=" %%a in ('ffprobe -show_frames "%%i" 2^>^&1 ^| find "width="') do ( set "w=%%a" )
- for /f "tokens=2 delims=^=" %%a in ('ffprobe -show_frames "%%i" 2^>^&1 ^| find "height="') do ( set "h=%%a" )
- if "!w!" gtr "!h!" move /y "%%i" "横向文件夹\."
- if "!w!" equ "!h!" move /y "%%i" "方形文件夹\."
- if "!w!" lss "!h!" move /y "%%i" "纵向文件夹\."
- endlocal
- )
- pause
复制代码
需要 用到ffprobe 添加到系统变量
保存为ansi格式,和图片放在一起
不会写,效率有点低...
作者: 盛世繁华 时间: 2022-12-11 02:06
回复 2# 77七 谢谢谢谢,赞!!!我也写了个笨的,放楼下吧哈哈哈
@echo off
setlocal enabledelayedexpansion
>tmp.vbs echo On Error Resume Next
>>tmp.vbs echo Set jFile = CreateObject("WIA.ImageFile"):jFile.LoadFile WScript.Arguments(0):WScript.Echo "W="^&jFile.Width:WScript.Echo "H="^&jFile.Height
cd /d %~dp0
set X=横图
set Y=纵图
set Z=方图
md "%X%" "%Y%" "%Z%" 2>nul
for /f "delims=""" %%i in ('dir /a-d /b /s ^|findstr /e "jpg jpeg png bmp gif webp apng"') do (
for /f "tokens=1,2" %%j in ('dir /tc "%%i" ^| findstr "%%~nxi"') do (
for /f "delims=" %%a in ('cscript.exe //nologo tmp.vbs "%%i"') do set "%%a"
if !W! GTR !H! move "%%i" "%X%"
if !W! LSS !H! move "%%i" "%Y%"
if !W! EQU !H! move "%%i" "%Z%"
)
)
del tmp.vbs
作者: 盛世繁华 时间: 2022-12-11 02:09
回复 2# 77七 没想到你速度这么快,我找了好久好几个模板算是怼一块儿
作者: 77七 时间: 2022-12-11 02:16
回复 4# 盛世繁华
我是小白,不会写...写了10多分钟
作者: 盛世繁华 时间: 2022-12-11 03:11
回复 5# 77七 我弄了一下午
作者: hfxiang 时间: 2022-12-11 13:40
回复 1# 盛世繁华
如果只处理jpg及jpeg文件,也可用jhead( http://bcn.bathome.net/tool/jhead.exe )- @echo off
- rem 保存为ANSI格式
- cd /d "%~dp0"
- md "横向文件夹" "方形文件夹" "纵向文件夹">nul
- for /f "tokens=*" %%a in ('dir/s/b "*.jp*g"') do (
- for /f "tokens=1-3 delims=:x " %%b in ('jhead -cs nul "%%~a"') do (
- if "%%~b" EQU "Resolution" (
- if %%c gtr %%d move /y "%%~a" "%~dp0横向文件夹\"
- if %%c equ %%d move /y "%%~a" "%~dp0方形文件夹\"
- if %%c lss %%d move /y "%%~a" "%~dp0纵向文件夹\"
- )
- )
- )
复制代码
作者: 盛世繁华 时间: 2022-12-12 11:35
:lol 回复 7# hfxiang
作者: 盛世繁华 时间: 2023-2-16 11:44
:victory: 回复 7# hfxiang
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |