Verhalten Inhaltsplugins bei Dateien mit falscher Extension

German support forum

Moderators: Hacker, Stefan2, white

User avatar
ZoSTeR
Power Member
Power Member
Posts: 1050
Joined: 2004-07-29, 11:00 UTC

Post by *ZoSTeR »

Ich würde bei deinen Dateimengen auf jeden Fall auch die exakte Offset/Wert Variante testen. 8K läppern sich ;)
User avatar
HolgerK
Power Member
Power Member
Posts: 5411
Joined: 2006-01-26, 22:15 UTC
Location: Europe, Aachen

Re: Verhalten Inhaltsplugins bei Dateien mit falscher Extens

Post by *HolgerK »

Dalai wrote:[*]Hat jemand Ideen, wie man auf andere Weise falsch benannte Bilder ausfindig machen kann? Momentan nutze ich TrID dafür, aber die Suche dauert sehr lange und lastet die CPU voll aus. Gibt's vielleicht ein Plugin, das die ersten 10 Bytes des Dateiinhalts durchsuchen kann?
Nicht die ersten 10 bytes aber es liefert eine Formatinformation.
wdx_mediainfo: http://www.ghisler.ch/board/viewtopic.php?p=261824#261824

Suche nach *.jpg
Plugins: mediainfo.general format != JPEG
oder mediainfo.general format = PNG

Ob es schneller ist kann ich allerdings nicht sagen.

Gruß
Holger
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Erstmal ein großes Dankeschön an alle fürs Mitdenken, Mitmachen und Lösungen ausdenken! 8)

Ich fasse mal die bisher möglichen Lösungen, deren Suchdauer sowie deren Vor- und Nachteile zusammen:
  1. Umbenanntes Plugin FileX (auf sowas muss man erstmal kommen ;)) mit

    Code: Select all

    x_detect="EXT="JPG" & !(FINDI("JFIF"))"
    • Suchdauer: ~1 Sek.
    • Vorteil: keiner
    • Nachteile: Findet JPGs ohne JFIF-Tag (was man vielleicht im detect-String noch ausschließen könnte); braucht ein Plugin, das nur für diesen einen Zweck missbraucht/umbenannt wurde
  2. Umbenanntes Plugin FileX mit

    Code: Select all

    x_detect="[0]!=255 & [1]!=216 & [2]!=255"
    • Suchdauer: ~1 Sek.
    • Vorteile: Findet alle Nicht-JPEGs, findet keine ohne JFIF-Tag
    • Nachteil: braucht ein Plugin, das nur für diesen einen Zweck missbraucht/umbenannt wurde
  3. Plugin MediaInfo mit Suche

    Code: Select all

    "mediainfo.general format" != JPEG
    • Suchdauer: ~8 Sek.
    • Vorteil: braucht kein missbrauchtes Plugin
    • Nachteil: Findet Dateien mit 0 Byte Größe (ja, ich weiß, kann man auch noch in der Suche ausfiltern)
  4. Plugin TrID
    • Suchdauer: ewig
    • Vorteil: kein wirklicher, außer dass ich das Plugin sowieso schon seit Jahren benutze
    • Nachteil: Stromverbrauch des Systems steigt deutlich ;)
  5. Batch-Skript mit file, ein wenig grep-Magic und dem Standalone-Lister (Skript folgt im nächsten Post, sonst wird's zu unübersichtlich)
    • Suchdauer: ~5 Sek.
    • Vorteil: unabhängig von TC nutzbar
    • Nachteile: nicht in den TC integrierbar, denn die Ergebnisliste wird nur im Standalone-Lister angezeigt; braucht recht lange, wenn es viele Dateien zu verarbeiten gibt
Die Suchdauer bezieht sich übrigens immer auf denselben Datenbestand (ein Verzeichnis mit 1860 Dateien mit einer Größe von 4,7 GB), der durch das OS gecacht wurde.

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Hier nun das Batch-Skript, das ich kurz nach dem Vorschlag mit file geschrieben habe. Es erwartet als einzigen Parameter ein Verzeichnis, das verarztet werden soll. Ein Eintrag im Startermenü oder Button von TC kann dann z.B. so aussehen:

Code: Select all

Kommando: FindJpgsWithWrongExtensionInDir.cmd
Parameter: "%P"

Code: Select all

@echo off

REM ---------------------------------------------------------------------------
set FILEEXE=E:\Programme\file\5.03\bin\file.exe
set LISTEREXE=%COMMANDER_PATH%\Plugins\Lister\Lister.exe
set LISTERPARAMS=/i="%COMMANDER_INI%" /T1
set GREPEXE=%SystemRoot%\system32\grep.exe
set FILETYPE=*.jpg
set EXCLUDESTRING=JFIF^|EXIF
REM ---------------------------------------------------------------------------

if "%~1"=="" (
    echo.
    echo Bitte zu verarbeitendes Verzeichnis angeben!
    echo.
    pause
    goto :EOF
)
goto DOIT

:OUT
echo %*
title %*
goto :EOF


:DOIT
REM --- temp. Datei definieren
set TEMPFILE=%TEMP%\$jpg_png_typelist.txt
set TEMPLIST=%TEMP%\$jpg_png_filelist.txt

REM --- Dateilist erstellen
echo.
call :OUT Erstelle Liste von %FILETYPE% in %1
dir /b /s /ogn "%~1%FILETYPE%">"%TEMPLIST%"

REM --- Dateitypen bestimmen
echo.
call :OUT Bestimme Dateitypen. Bitte warten ...
"%FILEEXE%" -f "%TEMPLIST%">"%TEMPFILE%"

REM --- Alle "Nicht-JPEGs" aus der Liste filtern
echo.
call :OUT Filtere Dateiliste nach "%EXCLUDESTRING%"
"%GREPEXE%" -Ev "%EXCLUDESTRING%" "%TEMPFILE%">"%TEMPFILE%.2"
move /Y "%TEMPFILE%.2" "%TEMPFILE%"

REM --- temp. Datei anzeigen
echo.
call :OUT Resultatliste anzeigen
start /wait /min "list" "%LISTEREXE%" %LISTERPARAMS% "%TEMPFILE%"

REM --- temp. Datei löschen
del /F /Q "%TEMPFILE%"
del /F /Q "%TEMPLIST%"
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Post by *Dalai »

Einige der o.g. Methoden funktionieren (richtig) gut, aber trotzdem ist die grundlegende Frage noch nicht geklärt: Warum werden falsch benannte Dateien von den Plugins ignoriert? Am detect-String liegt das übrigens nicht:

Code: Select all

[ContentPlugins]
5=%COMMANDER_PATH%\Plugins\ImgSize\ImgSize.wdx
6=%COMMANDER_PATH%\Plugins\ImageInfo\Images.wdx
6_detect="(EXT="BMP")|(EXT="JPG")|(EXT="JPEG")|(EXT="GIF")|(EXT="TGA")|(EXT="PNG")|(EXT="PSD")|(EXT="TIFF")|(EXT="TIF")|(EXT="PCX")"
10=%COMMANDER_PATH%\Plugins\TrID\trid.wdx
5_detect=
10_detect=
MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
J.Bl
Member
Member
Posts: 116
Joined: 2005-01-23, 16:29 UTC

Re: Verhalten Inhaltsplugins bei Dateien mit falscher Extens

Post by *J.Bl »

Dalai wrote:ImgSize [... gibt] zum falsch benannten Bild keinerlei Infos aus
[...]
Fragen:
  • Warum ist das so?
Weil der Plugin Autor, in diesem Fall ich, dies so festgelegt hat. [1]
Dalai wrote:
  • Liegt das an der Plugin-Schnittstelle[...]?
Nein.
Dalai wrote:
  • Oder liegt es an den Plugins?
Ja.

J.Bl, der diesen Thread gerade erst entdeckt hat.

[1] kann man durchaus auch ändern...
User avatar
Dalai
Power Member
Power Member
Posts: 9977
Joined: 2005-01-28, 22:17 UTC
Location: Meiningen (Südthüringen)

Re: Verhalten Inhaltsplugins bei Dateien mit falscher Extens

Post by *Dalai »

J.Bl wrote:
Dalai wrote:ImgSize [... gibt] zum falsch benannten Bild keinerlei Infos aus
[...]
Fragen:
  • Warum ist das so?
Weil der Plugin Autor, in diesem Fall ich, dies so festgelegt hat. [1]

[...]

[1] kann man durchaus auch ändern...
Das heißt, das Plugin vergleicht die Extension mit dem tatsächlich gefundenen/ermittelten Dateityp und arbeitet nur bei Übereinstimmung?

Wer ist "man"? Der Nutzer oder der Plugin-Autor? Wie könnte "man" es ändern? Unabhängig davon betrifft das aber nicht nur dieses eine Plugin sondern auch andere.

Weil du grad mal da bist: Warum kann ImgSize keine Dateien mit Extension .jpeg verarbeiten sondern nur .jpg? Klar, weil du das so festgelegt hast, aber warum?

MfG Dalai
#101164 Personal licence
Ryzen 5 2600, 16 GiB RAM, ASUS Prime X370-A, Win7 x64

Plugins: Services2, Startups, CertificateInfo, SignatureInfo, LineBreakInfo - Download-Mirror
J.Bl
Member
Member
Posts: 116
Joined: 2005-01-23, 16:29 UTC

Re: Verhalten Inhaltsplugins bei Dateien mit falscher Extens

Post by *J.Bl »

Dalai wrote:Wer ist "man"? Der Nutzer oder der Plugin-Autor
Entschuldigung: "man" = Plugin-Autor (also ich).
Dalai wrote:...warum...?
Faulheit... Zeitmangel... Unüberlegtheit...

Ich kann jetzt auf die Schnelle erst einmal nur auf Wunsch einige Erweiterungen anhängen (für - dem Plugin - schon bekannte Dateiformate). Später (in endlicher Zeit) kann dann durchaus (optional) die Variante dazukommen das Dateiformat aus den Dateien selbst zu ermitteln (das ist natürlich langsamer: früher verbot sichs deshalb schon aus geschwindigkeitsgründen).

J.Bl
Post Reply