
Я пытаюсь вернуть текстовый файл, содержащий некоторые сведения о файлах изображений в папке и ее подпапках. В частности:
- Путь к файлу
- Расширение изображения
- Размеры изображения
- Выбранная дата
- Модель камеры
Не все эти свойства могут быть доступны для каждого изображения — я пока не уверен, станет ли это проблемой.
Получение списка файлов — это нормально;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/?
этого параметра dimensions не указано как одно из доступных свойств. Это все, что я знаю о том, как устранить неполадки.
Так есть ли способ вернуть свойстваИзображениефайл (или список файлов) в Windows с помощью командной строки. Если нет, я открыт для всего, что не требует установки дополнительного ПО. Есть предложения?
решение1
Как получить свойства файла изображения в Windows с помощью командной строки?
Это можно сделать с помощью PowerShell.
Обычно заполняемые метаданные для файлов изображений содержат камеру, диафрагму, разрешение и другую полезную информацию о фотографии. Это может быть чрезвычайно полезно для любого, кто делает фотографии. Метаданные изображения легко найти на вкладке Файл для фотографии, нажав Свойства, затем Подробности.
...
Чтобы использовать Windows PowerShell для проверки этого типа метаданных, нужно использовать COM-объект Shell.Application, подключиться к файлу и пройтись по контейнеру свойств метаданных. Этот метод немного громоздкий. К счастью, я могу использовать ту же функцию, которую написал вчера, чтобы выполнить эту задачу.
Обратите внимание на полноеПолучить метаданные файлаФункция доступна в репозитории Script Center.
...
Обязательно сохраните результаты
Поскольку возможно, что скрипту необходимо будет пройти по тысячам фотографий, и для каждой фотографии ему нужно будет выполнить поиск по нескольким сотням атрибутов метаданных, выполнение скрипта займет некоторое время. Лучше всего сохранить результаты в переменной. Это позволит сортировать и обрабатывать данные после сбора после запуска.
Скрипт
Get-FileMetaDataReturnObject.ps1
содержит одну функцию. Функция — этоFileMetadata
функция Get-. Я загружаю функцию в Windows PowerShell ISE и запускаю ее, чтобы скопировать функцию в память. После этого я вызываю функцию и передаю ей массив путей к папкам. Я получаю массив путей к папкам с помощью командлетаGet-ChildItem
. Вот команда, которая выполняет рекурсивный поиск папки с именем pics и извлекает пути к каталогам в этой папке. Это однострочная команда, которая обернулась.$picMetadata = Get-FileMetaData -folder (Get-childitem E:\pics -Recurse -Directory).FullName
...
Запишите это в файл.
Теперь, когда я знаю, что команда выдает желаемый результат, я передаю результаты в
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
ИсточникИспользуйте PowerShell для поиска метаданных в файлах фотографий
Ознакомьтесь с приведенной выше ссылкой на источник, чтобы узнать, какие еще метаданные доступны.
решение2
Без установки внешних программ:tooltipinfo.bat
илиimginfo.bat
- просто передайте имя файла (или путь, если он не находится в том же каталоге), чтобы получить информацию.
решение3
Существует множество инструментов для командной строки, которые могут получать/извлекать метаданные изображений.
> "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
Приложив больше или меньше усилий, вывод можно отфильтровать по соответствующим свойствам и отформатировать нужным вам образом с помощью пакетных файлов.