求一个图片高宽比分类批处理
bat吧
全部回复
仅看楼主
level 1
黑蜥蜴✨ 楼主
目的:有多张壁纸,想根据高宽比分为两类,分成横屏和竖屏的。
具体:
文件夹a下有若干张图片,多种格式(jpg,png,jpeg)
设定阈值,例如1.5(阈值可在代码中修改)
高宽比≥1.5的图片,移动到新文件夹b中;
高宽比<1.5的图片,移动到新文件夹c中。
或者这样也行:
文件夹a下有若干张图片,多种格式(jpg,png,jpeg)
设定阈值,例如1.5(阈值可在代码中修改)
高宽比≥1.5的图片,删除。
2020年02月15日 08点02分 1
level 1
黑蜥蜴✨ 楼主

2020年02月15日 12点02分 2
level 9
复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的文件放一起运行
/*&cls
@璐村惂鐢ㄦ埛_000076K馃惥 off
rem 将图片按指定的高宽比进行归类/分类
mode con lines=3000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@璐村惂鐢ㄦ埛_053Q95e馃惥 %z%
cd /d "%~dp0"
set "folder1=B"
set "folder2=C"
set hw=1.5
dir /a-d/b *.jpg *.jpeg *.png *.bmp|cscript -nologo -e:jscript "%~f0" "%folder1%" "%folder2%" "%hw%"
:end
echo;%#% +%$%%$%/%@% %z%
pause
exit
*/
var sa=new ActiveXObject('Shell.Application');
var tmpfolder=sa.NameSpace(0);
var s=0;
for(var i=0;i<400;i++){if(tmpfolder.GetDetailsOf(null, i) == "尺寸"){s=i;break;}}
if(s==0){WSH.StdErr.WriteLine('no match');WSH.Quit();}
var fso=new ActiveXObject('Scripting.FileSystemObject');
while(!WSH.StdIn.AtEndOfStream){
var line=WSH.StdIn.ReadLine();
var f=fso.GetFile(line);
var x=1,y=1,z=1,size=null;
var objFolder=sa.NameSpace(f.ParentFolder.Path);
var objItem=objFolder.ParseName(f.Name);
size=objFolder.GetDetailsOf(objItem, s).match(/\d+/g);
if(size){
var t=size[1]/size[0];
var fd=WSH.Arguments(0);
if(t<Number(WSH.Arguments(2))){fd=WSH.Arguments(1);}
WSH.echo(size.join('x')+' '+t.toString()+'|'+line+' --> '+fd);
}
}
2020年02月15日 12点02分 4
大佬,这个还有@贴吧用户是怎么回事啊
2020年02月15日 16点02分
没事了,是手机显示的问题,感谢
2020年02月15日 16点02分
1