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

[文本处理] 如何用批处理删除1024*768的图片

[复制链接]
发表于 2012-4-30 19:56:30 | 显示全部楼层 |阅读模式
如何用批处理删除1024*768的图片
发表于 2012-4-30 20:37:50 | 显示全部楼层
好像得用第三方
发表于 2012-4-30 21:00:28 | 显示全部楼层
本帖最后由 hfg1977 于 2012-4-30 21:14 编辑
  1. @rem (主要用于剪掉MOKO下边缘logo.)
  2. @goto start
  3. :help
  4. @echo.===== Ver: 1.1 =========================== 发布日期: 2010-09-24 =======
  5. @echo.        BAT_NAME:        图片剪切.bat
  6. @echo.        返回值:               
  7. @echo.        作用  :                图片剪切
  8. @echo.        调用:        图片剪切.bat [Path...] [file...]
  9. @echo.                [Path]:        文件夹路径
  10. @echo.                [file]:        文件
  11. @echo.====================== Copyright@ by hf-g ========= [彭城] ============
  12. ping /n 4 127.0>nul
  13. goto:end
  14. :start ============================================================
  15. @echo off&setlocal
  16. path=%path%;%~d0\DOS\command\第三方命令行程序
  17. set "nconvert=E:\DOS\command\第三方命令行程序\nconvert.exe"
  18. ::==================ADD REG===============================
  19. for /f "skip=4 tokens=3" %%a in ('REG QUERY "HKLM\Software\hf'file" /v CUT_pic 2^>nul') do set KEY_v=%%a
  20. if "%KEY_v%" LSS "1" (
  21. reg add "HKLM\SOFTWARE\Classes\Directory\shell\图片剪切&C\command" /ve /d ""%~f0" "%%1"" /f>nul
  22. reg add "HKLM\SOFTWARE\Classes\jpegfile\shell\图片剪切&C\command" /ve /d ""%~f0" "%%1"" /f>nul
  23. reg add "HKLM\Software\hf'file" /v CUT_pic /d 1 /f>nul
  24. )
  25. ::========================================================
  26. if /i "%~1"=="" goto help
  27. if /i "%~1"=="-?" goto help
  28. set "ext="&set "pathname="&set "Dir_name="&set "p_str="&set "bottom_h="
  29. set /a exit_BL=0,D_count=0,f_count=0

  30. call:get_P %*
  31. if "%exit_BL%"=="1" goto end

  32. ::竖式图 30: 915→885 910→880
  33. ::横式图
  34. set bottom_h=24
  35. ::set/a bottom_h=1200-1080
  36. set bottom_w=777
  37. ::是否保留源文件
  38. set save_sourFile_BL=0

  39. :lop_err
  40. if not defined bottom_h (set /p bottom_h=输入底部需要剪掉的高度^(单位:像素^):)
  41. echo %bottom_h%|findstr "^[0-9][0-9]*$">nul 2>nul||(echo 错误的数值,请重新输入^!&goto lop_err)

  42. ::设置临时文件
  43. ::set "tmpfname=%~dp0.\%~n0.log"
  44. ::cd.>"%tmpfname%"
  45. ::echo 生成日志文件:            %tmpfname%
  46. echo 底部剪掉的高度:                %bottom_h% 像素
  47. echo 正在处理:
  48. ::========================MAIN============================
  49. set/a D_count-=1,f_count-=1
  50. if not "%pathname_0%"=="" (
  51. set "ext=*.jpg *.bmp"
  52. for /l %%i in (0,1,%D_count%) do (
  53. call pushd "%%pathname_%%i%%"
  54. call echo %%pathname_%%i%%:
  55. for /f "tokens=* delims=" %%i in ('dir /a-d/b/s %ext%') do (
  56. call:CUT_pic "%%i"
  57. )
  58. popd
  59. ))

  60. if not "%file_0%"=="" (
  61. for /l %%i in (0,1,%f_count%) do (
  62. call:CUT_pic "%%file_%%i%%"
  63. )
  64. )
  65. echo.
  66. ::pause
  67. ::left, center, right\#=top, middle, bottom(底), baseline(基线)
  68. :end ==============================================================
  69. ::if exist "%tmpfname%" del "%tmpfname%" "%~dp0.\del_list.bat"
  70. exit /b
  71. ::=================================================================
  72. :CUT_pic picfname        %bottom_h%
  73. set/p =%~nx1<nul

  74. ::剪掉下部的
  75. if "%save_sourFile_BL%"=="1" (
  76. %nconvert% -quiet -out jpeg -canvas #0 #-%bottom_h% top-left -o "$%%_1" "%~1"
  77. ) else (
  78. %nconvert% -quiet -out jpeg -canvas #0 #-%bottom_h% top-left "%~1"
  79. )
  80. ::剪掉上部的
  81. ::for WC3
  82. ::%nconvert% -quiet -out jpeg -canvas #-%bottom_w% #-%bottom_h% bottom-right "%~1"

  83. ::剪掉两边的
  84. ::nconvert -quiet -out jpeg -canvas #-777 #0 center -o "$%_1" "F:\pci\桌面\云_28.jpg"
  85. goto:eof
  86. ::========================参数设置与获得============================
  87. :get_p
  88. ::判断%1是文件夹或文件
  89. if "%~1"=="" goto:eof
  90. set "p_str=%~1"
  91. if exist "%p_str%" (
  92.         if exist "%p_str%." (
  93.         call set "pathname_%%D_count%%=%p_str%"&set /a D_count+=1&shift /1&goto get_p
  94.         )
  95.         call set "file_%%f_count%%=%p_str%"&set /a f_count+=1&shift /1&goto get_p
  96. ) else (
  97.         echo %p_str% 不是一个正确的文件夹路径或文件^!&set /a exit_BL=1&shift /1&goto end
  98. )
  99. @echo off
  100. :get_p_end
  101. goto:eof

复制代码
随便改改就行了.

-info             : 显示信息  这里有宽高信息.
发表于 2012-4-30 21:02:29 | 显示全部楼层
试试,也许删不全
  1. @echo off
  2. findstr /mic:"<exif:PixelXDimension>1024</exif:PixelXDimension>" *.jpg>list.txt
  3. for /f "delims=" %%a in ('findstr /mic:"<exif:PixelYDimension>768</exif:PixelYDimension>" /f:list.txt') do del /f /a "%%a"
  4. pause
复制代码
发表于 2012-4-30 21:21:13 | 显示全部楼层
很多看图软件都提供命令行模式的,用那个很方便
发表于 2012-4-30 21:31:33 | 显示全部楼层
  1. 引用:
  2. ...
  3. JPG格式:
  4. 在FFC0后3个字节开始 , 两个字节为图片高度 ,再两个字节为图片宽度
  5. ...
复制代码
不用第三方也可以,需要查阅JPG,BMP等常见图片格式,自行debug处理.

但决不会如'CrLf' 所说的那样做.
 楼主| 发表于 2012-4-30 21:43:58 | 显示全部楼层
确实删除不全啊
 楼主| 发表于 2012-4-30 21:48:29 | 显示全部楼层
回复 6# hfg1977


    整蒙了。不知道如何修改了
发表于 2012-4-30 21:56:12 | 显示全部楼层
  1. @echo off
  2. for %%a in (*.jpg) do (
  3.     jhead "%%a" | find "Resolution   : 1024x 768">nul && del /f /q "%%a"
  4. )
复制代码
 楼主| 发表于 2012-4-30 22:13:59 | 显示全部楼层
回复 9# gawk


    还没版主的好用啊
 楼主| 发表于 2012-4-30 22:23:26 | 显示全部楼层
回复 5# poter


  谢谢啊。  用ACD搞定。呵呵
发表于 2012-4-30 22:28:37 | 显示全部楼层
回复 10# xujiawen1000


    因为你还没有学会
发表于 2012-5-3 13:27:41 | 显示全部楼层
我来看热闹,看热闹
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-17 04:11 , Processed in 0.020939 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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