
标题: [文件操作] [已解决]批处理判断图片的水平分辨率和重置分辩率,如果不符合就把图片列举出来 [打印本页]
作者: 星麟 时间: 2015-9-3 21:04 标题: [已解决]批处理判断图片的水平分辨率和重置分辩率,如果不符合就把图片列举出来
所有图片是按254的分辨率裁的,有时候会遗漏了图片没裁,这就需要对当前运行目录下所有图片进行判断是否符合254的分辨率
就是判断一下图片箭头所指的分辨率,如果有图片不符合的话,把图片名字列举出来,如果全部符合就可以结束批处理,看看能不能用批处理实现,用第三方也可以的
作者: pcl_test 时间: 2015-9-3 21:55
本帖最后由 pcl_test 于 2017-3-24 21:30 编辑
- 1>1/* :
- @echo off
- ::如果包括子文件夹里的图片,则改为dir /a-d /b /s *.jpg
- for /f "delims=" %%a in ('dir /a-d /b *.jpg 2^>nul^| cscript -nologo -e:jscript "%~f0"') do echo;%%a&set "def=%%a"
- if defined def (pause) else echo;Not Found&ping /n 2 0 >nul
- exit /b
- */
- try{var files = WSH.StdIn.ReadAll().split(/\r?\n/)}catch(e){WSH.quit()}
- var fso = new ActiveXObject("Scripting.FileSystemObject");
- var shell = new ActiveXObject("Shell.Application");
- var objFolder = shell.NameSpace(0);
- for(var i=0; i<300; i++) {
- if(/^水平分[辨辩]率$/.test(objFolder.GetDetailsOf(null, i))) {
- var x = i;
- }else if(/^垂直分[辨辩]率$/.test(objFolder.GetDetailsOf(null, i))) {
- var y = i;
- }
- }
- for(var f in files){
- var fpath = fso.GetFile(files[f]).Path
- var objFolder = shell.Namespace(fpath.replace(/[^\\]*$/,''));
- var objItem = objFolder.ParseName(fpath.replace(/.*\\/,''));
- var Xdpi = objFolder.GetDetailsOf(objItem, x).replace(/\D/g,'');
- var Ydpi = objFolder.GetDetailsOf(objItem, y).replace(/\D/g,'');
- if(Xdpi!=254 || Ydpi!=254)WSH.Echo(files[f]+' X:'+Xdpi+',Y:'+Ydpi);
- }
复制代码
作者: 回家路上 时间: 2015-9-3 22:04
http://batch-cn.qiniudn.com/tool/nconvert.exe- @echo off
- ::改成自己的路径,这是当前路径
- set "picpath=%~dp0"
- for /f "delims=" %%i in ('dir /b /s /a-d %picpath%\*.jpg') do (
- for /f "tokens=1,2 delims=: " %%a in ('nconvert.exe -quiet -info *.png') do (
- if /i %%a equ "Width" if /i %%b equ 254 set /a n+=1
- if /i %%a equ "Height" if /i %%b equ 254 set /a n+=1
- )
- if not n==2 echo;%%~fi
- set n=
- )
- pause & exit /b
复制代码
作者: 星麟 时间: 2015-9-3 22:48
回复 3# 回家路上
虽然效果没能实现,不过谢谢你的回复
作者: 星麟 时间: 2015-9-3 22:55
谢谢你们,辛苦了
作者: pcl_test 时间: 2015-9-3 23:17
回复 4# 星麟
修改下即可- @echo off
- ::如果包括子文件夹里的图片,则改为dir /a-d /b /s *.jpg
- for /f "delims=" %%i in ('dir /a-d /b *.jpg') do (
- setlocal enabledelayedexpansion
- for /f "tokens=1,2 delims=: " %%a in ('nconvert.exe -quiet -info "%%i"') do (
- if /i "%%a" equ "Xdpi" if %%b equ 254 set /a n+=1
- if /i "%%a" equ "Ydpi" if %%b equ 254 set /a n+=1
- )
- if "!n!" neq "2" echo;%%i
- endlocal
- )
- pause & exit /b
复制代码
作者: 星麟 时间: 2015-9-4 13:22
回复 6# pcl_test
之前的我看懂了,已经修改好了,效果是没问题,非常感谢,我是说三楼的没有实现而已
作者: kqbcarl 时间: 2016-12-12 21:48
回复 2# pcl_test
请问脚本最前面的1>1/* : 是什么意思?
新手,还请多包涵,谢谢!
作者: GNU 时间: 2016-12-12 21:51
回复 8# kqbcarl
bat和jscript混编的一种写法,如果没有特殊的需求不建议在这个方面浪费太多时间。
作者: kqbcarl 时间: 2016-12-13 20:12
回复 9# GNU
想简单了解一下,有什么参考资料吗,网上搜1>1之类的,搜不到,还请指教,谢谢!
作者: GNU 时间: 2016-12-13 22:26
回复 10# kqbcarl
在本轮搜索混编多看几个帖子慢慢体会一下
作者: pcl_test 时间: 2017-3-24 21:38
本帖最后由 pcl_test 于 2017-3-24 21:39 编辑
- /*&cls
- @echo off
- ::如果包括子文件夹里的图片,则改为dir /a-d /b /s *.jpg
- for /f "delims=" %%a in ('dir /a-d /b *.jpg 2^>nul^| cscript -nologo -e:jscript "%~f0"') do echo;%%a&set "def=%%a"
- if defined def (pause) else echo;Not Found&ping /n 2 0 >nul
- exit /b
- */
- var fso = new ActiveXObject('Scripting.FileSystemObject');
- var img = new ActiveXObject('WIA.ImageFile');
- while(!WSH.StdIn.AtEndOfStream){
- var f = fso.GetFile(WSH.StdIn.ReadLine());
- img.LoadFile(f);
- var Xdpi=img.HorizontalResolution;
- var Ydpi=img.VerticalResolution;
- if(Xdpi!=254 || Ydpi!=254){WSH.Echo(fso.GetFileName(f)+' X:'+Xdpi+' Y:'+Ydpi)}
- }
复制代码
作者: pcl_test 时间: 2017-3-24 22:12
win7及以上系统运行- @echo off
- powershell ^
- add-type -AssemblyName System.Drawing;^
- dir . *.jpg^|%%{$img=New-Object System.Drawing.Bitmap $_.FullName;^
- $x=$img.HorizontalResolution;$y=$img.VerticalResolution;^
- if(($x -ne 254) -or ($y -ne 254)){$_.Name+' X:'+$x+' Y:'+$y}}
- pause
复制代码
- @echo off
- powershell ^
- $img=New-Object -ComObject Wia.ImageFile;^
- dir . *.jpg^|%%{$img.loadfile($_.FullName);^
- $x=$img.HorizontalResolution;$y=$img.VerticalResolution;^
- if(($x -ne 254) -or ($y -ne 254)){$_.Name+' X:'+$x+' Y:'+$y}}
- pause
复制代码
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |