我正在尝试返回一个文本文件,其中包含有关文件夹及其子文件夹中图像文件的一些详细信息。具体来说:
- 文件路径
- 图像扩展
- 图像尺寸
- 拍摄日期
- 相机型号
这些属性可能并不适用于每个图像 - 我不确定这是否会成为问题。
获取文件列表就可以了;DIR C:\[...]\FOLDER\*.* /S|
(我认为)。我不确定下一部分;我找到了有关其他操作系统的信息,也听过WMIC
建议。我尝试在单个文件上进行测试:
wmic datafile where Name="C:\[...]\IMG_5443.JPG" get Name,FileType > "C:\[...]\info.txt"
但它返回了,Error: Invalid query
所以我猜测 WMIC 不适用于图像,或者至少某些参数需要改变。
我还注意到,当我输入时,wmic datafile get/?
尺寸未列为可用属性之一。这就是我所知道的故障排除方法。
那么有没有办法返回图像使用命令行在 Windows 中打开文件(或文件列表)。如果没有,我愿意尝试任何不需要安装额外软件的方法。有什么建议吗?
答案1
如何使用命令行获取 Windows 中图像文件的属性?
您可以使用 PowerShell 执行此操作。
图像文件通常填写的元数据包含相机、光圈、分辨率和其他有关照片的有用信息。这对于任何拍照的人来说都非常有用。通过单击“属性”,然后单击“详细信息”,可以轻松从照片的“文件”选项卡中找到图像元数据。
...
要使用 Windows PowerShell 检查此类元数据,需要使用 Shell.Application COM 对象、连接到文件,然后遍历元数据属性包。这种技术有点麻烦。幸运的是,我可以使用昨天编写的相同函数来完成此任务。
注意完整获取文件元数据功能可在脚本中心存储库中使用。
...
确保存储结果
由于脚本可能需要遍历数千张照片,并且每张照片都需要搜索数百个元数据属性,因此脚本需要一些时间来运行。最好的做法是将结果存储在变量中。这将允许在运行后对数据进行排序和后期收集处理。
该
Get-FileMetaDataReturnObject.ps1
脚本包含一个函数。该函数是 Get-FileMetadata
函数。我在 Windows PowerShell ISE 中加载该函数,并运行它以将该函数复制到内存中。完成此操作后,我调用该函数并向其传递一个文件夹路径数组。我使用 cmdlet 获取文件夹路径数组Get-ChildItem
。下面是执行名为 pics 的文件夹的递归查找并提取该文件夹中的目录路径的命令。这是一个已换行的单行命令。$picMetadata = Get-FileMetaData -folder (Get-childitem E:\pics -Recurse -Directory).FullName
...
写入文件
现在我知道该命令产生了我想要的输出,我将结果传送到 cmdlet,
Export-CSV
如下所示(这是一个单行命令):$picMetadata | Select 'camera model', dimensions, f-stop, 'flash mode', 'iso speed', 'exposure time', 'focal length', size, path | Export-CSV -Path c:\fso\photoMetadata.csv -NoTypeInformation
阅读上面的源链接,查看还有哪些其他可用的元数据。
答案2
无需安装外部程序:tooltipinfo.bat
或者imginfo.bat
- 只需传递文件名(如果不在同一目录中,则传递路径)即可获取信息。
答案3
cmd 行有很多工具可以获取/提取图像元数据。
> "C\Program Files\IrfanView\i_view64.exe" *.jpg /info=Jpeg_Info.txt /fullinfo
示例输出(仅 1 张图片):
>type Jpeg_Info.txt
[Scan-100210-0002.jpg]
File name = Scan-100210-0002.jpg
Directory =
Compression = JPEG, quality: 90, subsampling ON (2x2)
Resolution = 300 x 300 DPI
Image dimensions = 2206 x 3264 Pixels (7.20 MPixels) (1.48)
Print size = 18.7 x 27.6 cm; 7.35 x 10.88 inches
Color depth = 16,7 Million (24 BitsPerPixel)
Number of unique colors = 83260
Disk size = 918.01 KB (940.042 Bytes)
Current memory size = 20.61 MB (21.607.720 Bytes)
File date/time = 2010-02-10 / 21:59:07
- EXIF -
Make - Canon
Model - N650U
ExifOffset - 86
DateTimeDigitized - 2010:02:10 21:59:01
> exiftool Scan-100210-0001.jpg
ExifTool Version Number : 9.73
File Name : Scan-100210-0001.jpg
Directory : .
File Size : 884 kB
File Modification Date/Time : 2010:02:10 21:21:28+01:00
File Access Date/Time : 2010:02:10 21:21:22+01:00
File Creation Date/Time : 2010:02:10 21:21:22+01:00
File Permissions : rw-rw-rw-
File Type : JPEG
MIME Type : image/jpeg
JFIF Version : 1.01
Resolution Unit : inches
X Resolution : 300
Y Resolution : 300
Exif Byte Order : Little-endian (Intel, II)
Make : Canon
Camera Model Name : N650U
Page Name : Reflective
Create Date : 2010:02:10 20:21:22
Image Width : 2202
Image Height : 3264
Encoding Process : Baseline DCT, Huffman coding
Bits Per Sample : 8
Color Components : 3
Y Cb Cr Sub Sampling : YCbCr4:2:0 (2 2)
Image Size : 2202x3264
> nconvert -fullinfo Scan-100210-0001.jpg 2>Nul
** NCONVERT v6.88 (c) 1991-2016 Pierre-E Gougelet (Apr 29 2016/17:06:08) **
Version for Windows Xp/Vista/7 x64 (All rights reserved)
** This is freeware software (for non-commercial use)
Scan-100210-0001.jpg : Success
Format : JPEG TrueColor (v1.1)
Name : jpeg
Compression : JPEG
Width : 2202
Height : 3264
Components per pixel : 3
Bits per component : 8
Depth : 24
# colors : 16777216
Color model : RGB
Bytes Per Plane : 6606
Orientation : Top Left
Xdpi : 300
Ydpi : 300
Page(s) : 1
Metadata : ( EXIF )
EXIF:
Camera:
Camera Manufacturer (0x010f): Canon
Camera Model (0x0110): N650U
Image:
Date digitized (0x9004): 2010:02:10 20:21:22
通过或多或少的努力,可以将输出过滤为相关属性,并使用批处理文件按照您想要的方式进行格式化。