找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 21656|回复: 8

[文件操作] 求教批处理如何把图片按照宽高比例分类?

[复制链接]
发表于 2022-12-11 00:28:48 | 显示全部楼层 |阅读模式
现在有一些各种格式的图片,需要按照横向、竖向、正方形不同的宽高比例,创建并分到当前目录下的不同的文件夹。也就是宽高比>1进横向文件夹,小于1进竖向文件夹,等于1的进方形文件夹。

bat能不能用来处理这个图片问题,当然能用powershell也行,感谢各位!!
发表于 2022-12-11 01:58:06 | 显示全部楼层
本帖最后由 77七 于 2022-12-11 02:07 编辑
  1. @echo off
  2. cd /d "%~dp0"
  3. md "横向文件夹"
  4. md "方形文件夹"
  5. md "纵向文件夹"
  6. for %%i in (*.jpg *.png *.bmp) do (
  7.     setlocal enabledelayedexpansion
  8.     for /f "tokens=2 delims=^=" %%a in ('ffprobe -show_frames "%%i" 2^>^&1 ^| find "width="') do ( set "w=%%a" )
  9.     for /f "tokens=2 delims=^=" %%a in ('ffprobe -show_frames "%%i" 2^>^&1 ^| find "height="') do ( set "h=%%a" )
  10.     if "!w!" gtr "!h!" move /y "%%i" "横向文件夹\."
  11.     if "!w!" equ "!h!" move /y "%%i" "方形文件夹\."
  12.     if "!w!" lss "!h!" move /y "%%i" "纵向文件夹\."
  13.     endlocal
  14. )
  15. pause
复制代码

需要 用到ffprobe 添加到系统变量
保存为ansi格式,和图片放在一起

不会写,效率有点低...
 楼主| 发表于 2022-12-11 02:06:38 | 显示全部楼层
回复 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:31 | 显示全部楼层
回复 2# 77七 没想到你速度这么快,我找了好久好几个模板算是怼一块儿
发表于 2022-12-11 02:16:38 | 显示全部楼层
回复 4# 盛世繁华
我是小白,不会写...写了10多分钟
 楼主| 发表于 2022-12-11 03:11:45 | 显示全部楼层
回复 5# 77七 我弄了一下午
发表于 2022-12-11 13:40:27 | 显示全部楼层
回复 1# 盛世繁华


如果只处理jpg及jpeg文件,也可用jhead( http://bcn.bathome.net/tool/jhead.exe

  1. @echo off
  2. rem 保存为ANSI格式
  3. cd /d "%~dp0"
  4. md "横向文件夹" "方形文件夹" "纵向文件夹">nul
  5. for /f "tokens=*" %%a in ('dir/s/b "*.jp*g"') do (
  6.         for /f "tokens=1-3 delims=:x " %%b in ('jhead -cs nul "%%~a"') do (
  7.                 if "%%~b" EQU "Resolution" (
  8.                         if %%c gtr %%d move /y "%%~a" "%~dp0横向文件夹"
  9.                         if %%c equ %%d move /y "%%~a" "%~dp0方形文件夹"
  10.                         if %%c lss %%d move /y "%%~a" "%~dp0纵向文件夹"
  11.                 )
  12.         )
  13. )
复制代码
 楼主| 发表于 2022-12-12 11:35:37 | 显示全部楼层
:lol 回复 7# hfxiang
 楼主| 发表于 2023-2-16 11:44:19 | 显示全部楼层
:victory: 回复 7# hfxiang
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:17 , Processed in 0.018319 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表