基本目的是》不用下载预装第三方,只用系统内置的资源,在批处脚本中直接调用 findstr/jscript/powershell 获取图片文件内置的 ‘拍摄时间’ (与资源管理器显示的图片文件拍摄时间一致),为此参考了老帖中的一些有效方法,梳理精装了测试代码分享如下,均予测试通过
方法一》直接用 findstr 匹配图片文件中内置的 ‘拍摄时间’ 字段,取用最后一个匹配结果- @echo off &set/p "pF=拖入一个图片文件(查看其拍摄时间):"
- for /f "delims=" %%t in (
- 'findstr "199 200 201 202" %pF%^|more^|findstr /rc:"[12][09][0-9][0-9]:[0-9][0-9]:[0-9][0-9]" '
- ) do set "t=%%t"
- echo,%t%&pause&exit/b
复制代码
方法二》通过 powershell 调用 wia.imageFile (微软标定的一种 ‘图像信息获取接口’) 提取与 ‘拍摄时间’ 对应的属性数据- @echo off &set/p "pF=拖入一个图片文件(查看其拍摄时间):"
- for /f "delims=" %%t in (
- 'powershell "$i=new-object -comobject WIA.ImageFile;$i.LoadFile('%pF%');$i.properties.item('ExifDTOrig').value" '
- ) do echo,%%t
- pause&exit/b
复制代码
方法三:代码存为 test.bat 运行》通过 jscript 调用 wia.imageFile 提取与 ‘拍摄时间’ 对应的属性数据- @set @v=1 /* &@echo off &set/p "pF=拖入一个图片文件(查看其拍摄时间):"
- for /f "delims=" %%t in ('cscript /nologo /e:jscript "%~f0" %pF%') do echo,%%t
- pause&exit/b */
- v=WSH.arguments, img=WSH.createObject('WIA.imageFile'), img.loadFile(v(0));
- WSH.echo(img.properties.item('ExifDTOrig').value);
- WSH.quit();
复制代码
方法四:代码存为 test.bat 运行》通过 jscript 调用 shell.appliction 提取与 ‘拍摄时间’ 对应的属性数据- @set @v=1 /* &@echo off &setlocal&set/p "pF=拖入一个图片文件(查看其拍摄时间):"
- for /f "delims=" %%t in ('cscript /nologo /e:jscript "%~f0" %pF%') do set "t=%%t"
- echo,%t:?=% &endlocal&pause&exit/b */
- v=WSH.arguments, s=WSH.createobject('shell.application');
- n=v(0).lastIndexOf('\\'), p=v(0).slice(0,n), f=v(0).slice(n+1);
- d=s.NameSpace(p), i=d.ParseName(f);
- WSH.echo(d.GetDetailsOf(i, 12)); //属性序号=12 对应属性名='dateTaken'
- WSH.quit()
复制代码