命令行返回图像属性

Gre*_*edo 9 command-line batch-file windows-10

我正在尝试返回一个文本文件,其中包含有关文件夹及其子文件夹中图像文件的一些详细信息。具体来说:

  • 文件路径
  • 图片扩展
  • 图片尺寸
  • 拍摄日期
  • 相机型号

这些属性可能并非对每个图像都可用 - 我不确定这是否会成为问题。

获取文件列表很好;DIR C:\[...]\FOLDER\*.* /S| (我认为)。这是我不确定的下一部分;我在其他操作系统上找到了信息,我也听说过WMIC建议。我尝试将其与单个文件的测试一起使用:

wmic datafile where Name="C:\[...]\IMG_5443.JPG" get Name,FileType > "C:\[...]\info.txt"
Run Code Online (Sandbox Code Playgroud)

但它返回Error: Invalid query所以我猜 WMIC 不适用于图像,或者至少某些参数需要更改。

我还注意到,当我输入wmic datafile get/?该维度时,未将其列为可用属性之一。这就是我所知道的故障排除方法。

那么有没有办法使用命令行在 Windows 中返回图像文件(或文件列表)的属性。如果没有,我愿意接受任何不需要安装额外软件的东西。有什么建议?

Dav*_*ill 6

如何使用命令行在 Windows 中获取图像文件的属性?

您可以使用 PowerShell 执行此操作。

通常为图像文件填写的元数据包含相机、光圈值、分辨率和其他有关照片的有用信息。这对任何拍照的人都非常有用。通过单击属性,然后单击详细信息,可以从照片的文件选项卡轻松找到图像元数据。

...

使用 Windows PowerShell 检查此类元数据意味着使用 Shell.Application COM 对象,连接到文件,然后遍历元数据属性包。这个技术有点麻烦。幸运的是,我可以使用昨天编写的相同函数来完成此任务。

请注意,脚本中心存储库中提供了完整的获取文件元数据功能。

...

确保存储结果

因为该脚本可能需要遍历数千张照片,并且对于每张照片需要搜索数百个元数据属性,所以该脚本需要一些时间来运行。最好的办法是将结果存储在一个变量中。这将允许在运行后对数据进行排序和收集后处理。

Get-FileMetaDataReturnObject.ps1脚本包含一个函数。该函数是Get-FileMetadata函数。我在 Windows PowerShell ISE 中加载该函数,并运行它以将该函数复制到内存中。完成后,我调用该函数并将文件夹路径数组传递给它。我使用Get-ChildItemcmdlet获取文件夹路径数组。这是对名为 pics 的文件夹执行递归查找并提取该文件夹中的目录路径的命令。这是一个已换行的单行命令。

$picMetadata = Get-FileMetaData -folder (Get-childitem E:\pics -Recurse -Directory).FullName
Run Code Online (Sandbox Code Playgroud)

...

将其写入文件

现在我知道命令会产生我想要的输出,我将结果通过管道传输到Export-CSVcmdlet,如下所示(这是一个单行命令):

$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
Run Code Online (Sandbox Code Playgroud)

Source使用 PowerShell 从照片文件中查找元数据

阅读上面的源链接,看看还有哪些其他元数据可用。