5

Как гласит заголовок, существует ли сценарий для Win 7 для печати в файле .txt всех изображений (JPG, PNG, GIF и т.д.) В папке вместе с "filename" и "измерением в пикселях"?
Я пытался с dir в командной строке, но только перечисляет имя, размер файла ECC ..


Решение с ExifTool

Лучшее предложение imo, с командой, уже закодированной в имени файла .exe, это полностью сценарий перетаскивания, который можно использовать где угодно!

Обновить
Для удобства я немного изменил встроенное имя файла exe к этому

ExifTool(-FileName -Imagesize -r -T -w+! %0finfo.txt -ext jpg --ext exe .).exe

Таким образом, я уменьшил до минимума вывод .txt до одной строки на изображение (-T) и добавил рекурсивную опцию (-r), чтобы он также мог обрабатывать подпапки.


Решение с ImageMagick

Я поместил ниже свое решение с ImageMagick, это довольно быстро и просто, но ofc требует установленной библиотеки.

3 ответа3

6

Используя ExifTool (переносимый исполняемый файл, переименованный в exiftool.exe):

exiftool -ImageSize -r .

Здесь ImageSize - это имя тега, которое вас интересует, и оно будет печатать ширину изображения x высоту изображения. -r позволяет рекурсивно обрабатывать файлы в подкаталогах.

Пользовательский формат выходной строки также прост. Например:

exiftool -p "Image Name: \"$FileName\"$/Image Size: $ImageSize$/" -r .

В этом случае именам тегов предшествует $. $/ печатает новую строку.

Примечание. Приведенные выше команды необходимо вводить в командной строке. Чтобы перенаправить вывод в текстовый файл, вы можете добавить к ним > Details.txt .


Если вы хотите просто запустить программу и написать текстовый файл с соответствующими сведениями об изображении, вы можете переименовать исполняемый файл следующим образом:

ExifTool(-FileName -Imagesize -w+! %0fDetails.txt -ext gif --ext exe .).exe

Это запишет весь вывод консоли (-w) в файл с именем Details.txt в текущем каталоге. В этом случае выходные данные будут состоять из имен и размеров изображений для всех GIF-файлов в текущем каталоге. Более подробная информация о параметре -w , включая значение + ! и %0f доступны по ссылке на документацию выше.

Вы можете добавить больше расширений для обработки, используя -ext jpg -ext png и т.д., Или вообще удалить -ext gif , чтобы он читал все поддерживаемые типы файлов (включая не изображения, которые вам могут не понадобиться).

--ext exe используется для исключения всех EXE-файлов (чтобы собственный исполняемый файл программы не был включен в отчет).

Конечно, можно добавить -r для включения рекурсивной обработки.

Существует много больше вы можете сделать с программой учитывая то, как смешно это мощное оружие есть (и расширяемый также учитывая , что полный исходный Perl находится в свободном доступе)!

1

Ниже приведен скрипт PowerShell, который должен это сделать; просто измените каталоги для списка и вывода. Я тестировал под Windows 8.1 и Windows PowerShellISE.

param( $folder = "E:\My Pictures", $outputFile = "E:\details.txt" )
$objShell = New-Object -ComObject Shell.Application
$fileList = @()
$attrList = @{}
$details = ( "Dimensions" )
$objFolder = $objShell.namespace($folder)
for ($attr = 0 ; $attr  -le 500; $attr++)
{
    $attrName = $objFolder.getDetailsOf($objFolder.items, $attr)
    if ( $attrName -and ( -not $attrList.Contains($attrName) ))
    {
        $attrList.add( $attrName, $attr )
    }
}
dir $folder -Recurse -Directory | ForEach-Object{
    $objFolder = $objShell.namespace($_.FullName)
    foreach($file in $objFolder.items())
    {
        foreach( $attr in $details)
        {
            $attrValue = $objFolder.getDetailsOf($file, $attrList[$attr])
            if ( $attrValue )
            {
                Add-Member -InputObject $file -MemberType NoteProperty -Name $("A_" + $attr) -value $attrValue
            }
        }
        $fileList += $file
        $fileList.Count
    }
}
$fileList | Export-Csv $outputFile -Delimiter ','
$fileList | Format-Table
1

Ок решение с ImageMagick, просто и быстро (но для ofc требуется библиотека).

Откройте строку cmd в интересующей вас папке (Shift+RightClick внутри окна вашей папки и выберите "Открыть окно командной строки здесь"), затем в командной строке cmd используйте эту

identify -format "%f %wx%h\r" *.jpg > info.txt

Вызывает %f filename , %w width и %h height отформатированные как "WIDTHxHEIGHT"

Более подробная информация здесь http://www.imagemagick.org/script/escape.php

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .