Skript zum Abrufen von Bildern in einem Ordner mit Abmessungen, die in eine TXT-Datei gedruckt werden

Skript zum Abrufen von Bildern in einem Ordner mit Abmessungen, die in eine TXT-Datei gedruckt werden

Wie der Titel schon sagt: Gibt es ein Skript für Win 7, um alle Bilder (JPG, PNG, GIF usw.) in einem Ordner zusammen mit „Dateiname“ und „Pixelgröße“ in einer TXT-Datei auszudrucken?
Ich habe es über die Befehlszeile versucht dir, aber es werden nur Name, Dateigröße usw. aufgelistet.


Lösung mit ExifTool

Das ist meiner Meinung nach das beste Angebot, da der Befehl bereits im Dateinamen der EXE-Datei codiert ist. Es handelt sich also vollständig um ein Drag & Drop-Skript, das Sie verwenden können, wo immer Sie möchten!

Aktualisieren
Der Einfachheit halber habe ich den Inline-Dateinamen der EXE leicht geändert.

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

Auf diese Weise habe ich die TXT-Ausgabe auf ein Minimum reduziert, auf eine einzelne Zeile pro Bild ( -T), und eine rekursive Option ( -r) hinzugefügt, damit auch Unterordner verarbeitet werden können.


Lösung mit ImageMagick

Unten habe ich meine Lösung mit ImageMagick aufgeführt. Sie ist ziemlich schnell und einfach, erfordert aber natürlich die Installation der Bibliothek.

Antwort1

Verwenden vonExifTool(portable ausführbare Datei umbenannt inexiftool.exe):

exiftool -ImageSize -r .

HierBildgrößeist der Tag-Name, der Sie interessiert und gedruckt wirdBildbreite x BildhöheDer -rSchalter bewirkt, dass Dateien in Unterverzeichnissen rekursiv verarbeitet werden.

BrauchAusgabezeichenfolgenformatist auch einfach. Zum Beispiel:

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

In diesem Fall wird den Tag-Namen ein $ vorangestellt. $/Druckt eine neue Zeile.

Hinweis: Die obigen Befehle müssen in der Eingabeaufforderung eingegeben werden. Um die Ausgabe in eine Textdatei umzuleiten, können Sie > Details.txtsie anhängen.


Wenn Sie das Programm einfach ausführen und eine Textdatei mit den relevanten Bilddetails schreiben lassen möchten, können SieBenennen Sie die ausführbare Datei umwie folgt:

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

Dadurch werden alle Konsolenausgaben ( -w) in eine Datei namensDetails.txtim aktuellen Verzeichnis. In diesem Fall besteht die Ausgabe aus den Bildnamen und -größen für alle GIFs im aktuellen Verzeichnis. Weitere Einzelheiten zum -wParameter, einschließlich der Bedeutung von +, !und %0fsind unter dem oben stehenden Dokumentationslink verfügbar.

Du kannstenthaltenweitere zu verarbeitende Erweiterungen -ext jpg -ext pngusw. oder -ext gifdas vollständige Löschen, damit alle unterstützten Dateitypen gelesen werden (einschließlich Nicht-Bilddateitypen, die Sie möglicherweise nicht möchten).

--ext exewird benutzt umausschließenalle EXEs (sodass die ausführbare Datei des Programms selbst nicht im Bericht enthalten ist).

-rkann natürlich hinzugefügt werden, um eine rekursive Verarbeitung zu ermöglichen.

Es gibtvieleSie können mit dem Programm mehr machen, wenn man bedenkt, wie unglaublich leistungsstark es ist (und auch, dass es erweiterbar ist, da der vollständige Perl-Quellcode kostenlos verfügbar ist)!

Antwort2

Ok Lösung mitBildMagick, einfach und schnell (erfordert aber natürlich die Bibliothek).

Öffnen Sie die Befehlszeile im gewünschten Ordner ( Shift+ RightClickin Ihrem Ordnerfenster und wählen Sie "Eingabeaufforderung hier öffnen"). Geben Sie dann in der Eingabeaufforderung Folgendes ein

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

Erfordert %f filenameund formatiert %w widthals %h height„BREITExHÖHE“

Mehr Infos hierhttp://www.imagemagick.org/script/escape.php

Antwort3

Es gibt einePowerShell-Skriptdarunter sollte es funktionieren; ändern Sie einfach die Verzeichnisse für Liste und Ausgabe. Ich habe unter Windows 8.1 und Windows PowerShellISE getestet.

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

verwandte Informationen