标题: [文件操作] BAT如何调用WScript参数获取图片分辨率进行分类? [打印本页]
作者: 老卡机 时间: 2017-9-13 21:57 标题: BAT如何调用WScript参数获取图片分辨率进行分类?
jpg、png和bmp三种图片N张,分辨率各不相同,
第一步,在图片目录运行BAT,获取所有文件名称,从名称中提取出类型赋予变量1,
第二步,想用WScript获取图片分辨率赋予变量2,根据变量2的图片分辨率新建文件夹,比如新建1280x768文件夹
第三步,根据变量1,在变量2的文件夹内新建文件夹,如果只有两个类型就建立那两个,比如:"1280x768\jpg"和"1280x768\png"
第四步,用move命令,根据图片分辨率,移动到各自的类型的文件夹内。
先谢谢了,可能表达的不对,这个过程不会反复的新建文件夹或读同一个文件吧?
作者: codegay 时间: 2017-9-13 22:25
你要是想学,你就自己写。
你要是不想写,那你就只要描述你想干嘛就行了。
作者: 老卡机 时间: 2017-9-13 22:31
本帖最后由 老卡机 于 2017-9-13 23:14 编辑
没学会JS变量,这个论坛也没找到
比如js混编获取文件路径,以文本方式提取,文件所在的文件夹为变量1,文件名为变量2,文件类型为变量3
作者: slore 时间: 2017-9-13 23:36
建议直接下载 IrfanView,用IrfanView的批量改名,可以指定命名格式.用$H,$W就是图像分辨率.
作者: WHY 时间: 2017-9-14 01:35
本帖最后由 WHY 于 2017-9-15 00:26 编辑
- @if(0)==(0) echo off
- for /f "tokens=1*" %%i in ('dir /b *.jpg *.png *.bmp ^| cscript //nologo //e:jscript "%~f0"') do (
- echo;md %%i
- echo;move "%%j" %%i\
- )
- pause & goto :EOF
- @end
-
- var objShell = new ActiveXObject('Shell.Application');
- var strFolder = WSH.ScriptFullName.replace(/(.+)\\[^\\]+$/, '$1'); //脚本所在文件夹名
- var objFolder = objShell.NameSpace(strFolder);
-
- for(var i=0; i<300; i++) {
- if(/^(尺寸|分[辩辨]率)$/.test(objFolder.GetDetailsOf(null, i))){var n = i;}
- //分辨率对应的序号
- }
-
- while(!WScript.StdIn.AtEndOfStream) {
- var strFile = WScript.StdIn.ReadLine(); //文件名
- var strExt = strFile.match(/.+\.([^.]+)$/)[1]; //扩展名
- var objItem = objFolder.ParseName(strFile);
- var res = objFolder.GetDetailsOf(objItem, n).match(/\d+/g).join('x'); //分辨率
- WSH.Echo(res + '\\' + strExt + ' ' + strFile);
- }
复制代码
作者: 老卡机 时间: 2017-9-14 09:48
学习了非常好用,如何从strFolder获取所在目录路径值,应用到md那里新建文件夹,虽然说路径可有可无
作者: slore 时间: 2017-9-14 10:02
回复 5# 老卡机
为什么说不能。
不知道你有没有用irfanview试过。
复制/重命名规则设置Hx$W\$F
(分辨率长x分辨率宽\元文件名)
输出目录设置为D:\
点run test rename,确认下都OK,直接点start batch就完了。
图片上传失败了,只能50KB?这也太小了。
(就是一个设定画面,选择改名模式,输入改名规则,添加要处理的文件列表)
处理前:- D:\Users\SLORE\Desktop\testimage>tree /F
- D:.
- │ 1_dog.jpg
- │ 2_dog.jpg
- │ 3_dog.jpg
- │ 4_dog.jpg
- │
- └─elephant
- 1_elephant3.jpg
- 2_elephant3.jpg
- 3_elephant3.jpg
- 4_elephant3.jpg
复制代码
dry-run模式测试结果:- Pattern: $Wx$H\$F
-
- Processing file: D:\Users\SLORE\Desktop\testimage\1_dog.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\449x500\1_dog.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\2_dog.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\450x500\2_dog.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\3_dog.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\449x500\3_dog.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\4_dog.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\450x500\4_dog.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\elephant\1_elephant3.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\305x288\1_elephant3.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\elephant\2_elephant3.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\306x288\2_elephant3.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\elephant\3_elephant3.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\305x288\3_elephant3.jpg
-
- Processing file: D:\Users\SLORE\Desktop\testimage\elephant\4_elephant3.jpg
- ... Ok - Warning: Destination file already exists -> Replace: C:\testimage2\306x288\4_elephant3.jpg
-
-
- 8 Files - Errors: 0, Warnings: 8
复制代码
移动后:- C:\testimage2>tree /F
- C:.
- ├─305x288
- │ 1_elephant3.jpg
- │ 3_elephant3.jpg
- │
- ├─306x288
- │ 2_elephant3.jpg
- │ 4_elephant3.jpg
- │
- ├─449x500
- │ 1_dog.jpg
- │ 3_dog.jpg
- │
- └─450x500
- 2_dog.jpg
- 4_dog.jpg
- C:\testimage2>
复制代码
缺点的话,分辨率的文件夹不存在的时候,会出个提示问你是否确认一直点OK就行了,没找到option去关闭。
不过命令行模式应该有。
作者: WHY 时间: 2017-9-15 00:39
回复 7# 老卡机
strFolder 变量就是当前批处理所在目录,相当于 %~dp0 去掉最后的 "\" 字符。这里是相对路径,所以传递给 md 命令没有意义
如果需要移动到其它目录:
md "D:\Test\%%i"
move "%%j" "D:\Test\%%i"
作者: 老卡机 时间: 2017-9-15 20:16
先新建分辨率然后在分辨率里面新建格式文件夹,发现新建的分辨率文件夹近百个,
后来干脆先建格式文件夹,然后再在里面新建分辨率文件夹了,
唯一的是缺陷是先先不停的一次次新建文件夹,如果有也会尝试建立,后面是移动
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |