[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] 批处理提取文件夹中jpg类型图片的名称及其打印尺寸(单位cm)

经常需要整理每日文件夹中的jpg类型图片的名称及其打印尺寸(cm),并把他们填写在Excle表格中。
如图所示
在Windows的图片属性中的详细信息窗格下面,可以看见宽度、高度(单位都是像素)和水平分辨率、垂直分辨率(都是打印分辨率),但是没有直接显示打印尺寸。我们可以通过运算 “像素÷分辨率” 得到“打印尺寸(单位英寸)”,然后把英寸转为cm,计算出需要的宽和高。
或者您有别的更简单的方法也可以试试!尺寸四舍五入精确到小数点后1位即可,结果按照文件名排序,可输出到一个记事本内。格式:文件名_宽×高
曾经有人提出类似的问题,这是链接,其中9楼@terse的代码
http://www.bathome.net/redirect. ... 9573&ptid=35923
运行良好,不过显示的是像素,没有经过运算 结果不是cm,仅供参考!谢谢了!期待高手回答,感谢万分!!
新时代的学子——字字珠玑,灵学灵用,化繁为简 。

本帖最后由 pcl_test 于 2017-1-9 08:33 编辑
  1. //&cls&dir /a-d/b *.jpg *.jpeg 2>nul|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. var img = new ActiveXObject('WIA.ImageFile');
  4. while(!WSH.StdIn.AtEndOfStream){
  5.     var f = fso.GetFile(WSH.StdIn.ReadLine());
  6.     img.LoadFile(f);
  7.     WSH.Echo(fso.GetFileName(f)+' '+
  8.         (img.Width/img.HorizontalResolution*2.54).toFixed(1)+'x'+
  9.             (img.Height/img.VerticalResolution*2.54).toFixed(1));
  10. }
复制代码
  1. @echo off
  2. powershell ^
  3.     [void][Reflection.Assembly]::LoadWithPartialName('System.Drawing');^
  4.     ls *.jpg,*.jpeg^|%%{^
  5.         $img=[System.Drawing.Image]::FromFile($_.fullname);^
  6.         $_.Name+' '+^
  7.             ($img.Width/$img.HorizontalResolution*2.54).ToString('#0.0')+^
  8.                 'x'+($img.Height/$img.VerticalResolution*2.54).ToString('#0.0');^
  9.     }
  10. pause
复制代码
2

评分人数

TOP

回复 2# pcl_test
很好。我的是win10系统,感觉第一个代码比第二个代码运行速度要快,两个结果一致。
只是没有导出到记事本内,怎样才可以自动导出到一个叫做“图片尺寸”的记事本内呢?谢谢亲了!
新时代的学子——字字珠玑,灵学灵用,化繁为简 。

TOP

回复 3# Bumblebee

参看你自己发的链接里的代码是在哪里修改输出到“图片尺寸.txt”的

TOP

本帖最后由 Bumblebee 于 2017-1-13 21:51 编辑

回复 4# pcl_test
这是我根据你第一个代码,和参照我发的链接里的代码,修改来的。我感觉运行还好,你看看是否有错误的地方?
  1. //&cls&dir /a-d/b *.jpg *.jpeg 2>nul|cscript -nologo -E:JScript %0 >图片打印尺寸.txt & pause  & exit @end
  2. var fso = new ActiveXObject('Scripting.FileSystemObject');
  3. var img = new ActiveXObject('WIA.ImageFile');
  4. while(!WSH.StdIn.AtEndOfStream){
  5.     var f = fso.GetFile(WSH.StdIn.ReadLine());
  6.     img.LoadFile(f);
  7.     WSH.Echo(fso.GetFileName(f)+' '+
  8.         (img.Width/img.HorizontalResolution*2.54).toFixed(1)+'x'+
  9.             (img.Height/img.VerticalResolution*2.54).toFixed(1));
  10. }
复制代码
【只修改了第一段后面的一些内容】
新时代的学子——字字珠玑,灵学灵用,化繁为简 。

TOP

返回列表