Home » Best Choice vb net excel datei auslesen New Update

Best Choice vb net excel datei auslesen New Update

by Tratamien Torosace

You are viewing this post: Best Choice vb net excel datei auslesen New Update

Neues Update zum Thema vb net excel datei auslesen


LINQ – Wikipedia New

LINQ ist eine Sammlung von Erweiterungsmethoden, die auf Monaden operieren. Zudem gibt es in einigen .NET-Sprachen wie C#, VB.NET und F# eigene Schlüsselwörter für eine vorbestimmte Menge an LINQ-Methoden. Monaden werden in .NET als generische Klassen oder Interfaces mit einzelnem Typargument (z. B. IEnumerable < T >, IObservable < T >) abgebildet. LINQ

+ Details hier sehen

Read more

Dieser Artikel behandelt das Verfahren für den Zugriff auf Daten

Für den Vergnügungskomplex von Las Vegas siehe The LINQ

LINQ (Abkürzung für Language Integrated Query; Aussprachelink) ist eine programmatische Methode von Microsoft für den Zugriff auf Daten

LINQ wurde unter der Leitung von Erik Meijer[1] entwickelt und erschien erstmals mit dem. NET Framework 3.5

Ziel von LINQ [ edit | Quelle bearbeiten ]

Die Daten, auf die ein Programm zugreift, stammen aus unterschiedlichen Quellen.[2] Dazu gehören[3]

interne Quellen wie Felder und Objektlisten und Hierarchien

externe Quellen wie XML-Dokumente, Datenbanktabellen, Textdateien, Excel-Dateien, E-Mail-Nachrichten, SharePoint-Listen und viele andere

Jede dieser Datenquellen hat ihre eigenen Zugriffsmethoden

Daher muss sich der Programmierer im Einzelfall mit den Details der jeweiligen Methode auseinandersetzen

Außerdem muss jedes Mal, wenn Daten von einer Quelle zu einer anderen Art von Quelle verschoben werden, das Programm geändert werden

LINQ versucht, dieses Problem zu lösen, indem es eine konsistente Methode für den gesamten Datenzugriff innerhalb der. NET-Entwicklungsplattform bereitstellt

Die Syntax von Abfragen in LINQ ähnelt der von SQL

Im Gegensatz zu SQL stellt LINQ aber auch Sprachelemente zur Verfügung, die geeignet sind, auf hierarchische und Netzwerkstrukturen zuzugreifen, indem sie die dort vorhandenen Beziehungen ausnutzen.[4] LINQ ist eine Sammlung von Erweiterungsmethoden, die mit Monaden arbeiten.[6][7] Außerdem haben einige. NET-Sprachen wie C#, VB.NET und F# ihre eigenen Schlüsselwörter für einen vorgegebenen Satz von LINQ-Methoden.[8][9] Monaden werden in. NET als generische Klassen oder Schnittstellen mit einem einzigen Typargument dargestellt (z

B

IEnumerable , IObservable )

LINQ-Anweisungen werden direkt als Quellcode in. NET-Programme eingebettet.[10] Dadurch kann der Code vom Compiler auf Fehler überprüft werden

Andere Methoden wie ADO und ODBC verwenden jedoch Abfragezeichenfolgen

Diese können nur zur Laufzeit interpretiert werden; Fehler erscheinen dann schwerwiegender und sind schwieriger zu analysieren

Innerhalb des Quellprogramms in C# oder VB.NET präsentiert LINQ die Abfrageergebnisse als streng typisierte Aufzählungen.[11] Es garantiert somit Typsicherheit zur Kompilierzeit

Sogenannte LINQ-Provider[2] (englisch LINQ provider) übersetzen die LINQ-Anweisungen in die speziellen Zugriffsmethoden der jeweiligen Datenquelle

Die folgenden Anbieter sind innerhalb der. NET-Plattform verfügbar:[12]

LINQ to Objects für den Zugriff auf Objektlisten und Hierarchien im Arbeitsspeicher

für den Zugriff auf Objektlisten und Hierarchien im Speicher LINQ to SQL für die Abfrage und Bearbeitung von Daten in MS-SQL-Datenbanken

zum Abfragen und Bearbeiten von Daten in MS-SQL-Datenbanken LINQ to Entities zum Abfragen und Bearbeiten von Daten im relationalen ADO.NET-Modell; [13]

zum Abfragen und Bearbeiten von Daten im relationalen Modell von ADO.NET; LINQ to XML für den Zugriff auf XML-Inhalt

für den Zugriff auf XML-Inhalt LINQ to DataSet für den Zugriff auf ADO.NET-Datensammlungen und -Tabellen

für den Zugriff auf ADO.NET-Datensammlungen und Tabellen LINQ to SharePoint für den Zugriff auf SharePoint-Daten.[14]

Wichtige Konzepte [Bearbeiten| Quelle bearbeiten ]

Die Beispiele sind in C#, sofern nicht anders angegeben

Faule Auswertung [ bearbeiten | Quelle bearbeiten ]

LINQ-Ausdrücke werden nicht ausgeführt, wenn sie definiert sind, sondern wenn der Wert abgefragt wird

Dies wird als verzögerte Bewertung (auch verzögerte Bewertung) bezeichnet

Dadurch kann die Abfrage auch mehrfach verwendet werden.

var zahlen = neue Liste < int > () { 1 , 2 , 3 , 4 }; // Liste mit 4 Zahlen // Abfrage wird definiert aber nicht ausgewertet var query = from x in numbers select x ; Zahlen

add(5); // füge eine 5

Zahl hinzu // jetzt wird die Abfrage ausgewertet Console

WriteLine ( Abfrage

Count ()); // 5 Zahl

add(6); // füge eine 6

Zahl hinzu Console

WriteLine ( Abfrage

Count ()); // 6

Lazy Evaluation kann auf verschiedene Weise implementiert werden

Beispielsweise verwendet LINQ to Objects Delegaten, während LINQ to SQL stattdessen die IQueryable-Schnittstelle implementiert

Damit das Abfrageergebnis nicht verändert wird, muss es in einen anderen Typ konvertiert werden

Dafür werden Konvertierungsmethoden wie AsEnumerable() , ToArray() , ToList() , ToDictionary() , ToLookup() etc

verwendet

Wenn die LINQ-Abfrage eine Funktion aufruft, die eine Ausnahmebehandlung erfordert, muss der Try-Catch-Block von der Abfrage und nicht von ihrer Konstruktion verwendet werden

Auflösung der Erweiterungsmethode [ bearbeiten | Quelle bearbeiten ]

LINQ-Funktionen werden als Erweiterungsmethoden implementiert

Gegeben sei eine Aufzählung von Elementen eines Typs:

Die Methode Where() zum Filtern nach beliebigen Kriterien kann nun über eine Erweiterungsmethode (wieder-)implementiert werden:

public static class EnumerableExtensions { public static IEnumerable < T > Where < T >( this IEnumerable < T > source , Func < T , bool > predicate ) { foreach ( var element in source ) { if ( predicate ( element )) yield return element ; } } }

Bestimmte. NET-Sprachen haben ihre eigenen Schlüsselwörter, um die Methoden aufzurufen:

var query = von e in Angestellten wobei e

DepartmentId == 5 select e ;

Diese Schlüsselwörter werden vom Compiler in die entsprechenden Methodenaufrufe aufgelöst:

var Abfrage = Mitarbeiter

Wobei ( e => e

DepartmentId == 5 )

Wählen Sie ( e => e );

Da es sich um Erweiterungsmethoden handelt, muss der Compiler die Methodenaufrufe in einen Aufruf der Methoden der entsprechenden Erweiterungsklasse auflösen:

var query = Enumerable

Wählen Sie ( EnumerableExtensions

Where ( employee , e => e

DepartmentId == 5 ), e => e );

Wichtige Operatoren [Bearbeiten | Quelle bearbeiten ]

From definiert die Datenquelle einer Abfrage (query) oder Unterabfrage (subquery), sowie eine Bereichsvariable (range variable), die ein einzelnes Element der Datenquelle (data source) darstellt

from rangeVariable in dataSource //.

.

Abfragen können mehrere from-Possess-Operationen haben, um Joins aus mehreren Datenquellen zu ermöglichen

Es ist zu beachten, dass die Join-Bedingung für mehrere From-Operationen durch die Datenstruktur definiert ist und sich vom Konzept eines Joins in relationalen Datenbanken unterscheidet

var queryResults = von c in Kunden von o in Bestellungen select new { c

Namen, ach

OrderId , o

Preise };

oder kürzer:

var queryResults = from c in Kunden, o in Aufträgen wählen Sie neu {c

Namen, ach

OrderId , o

Preise };

Wo definiert einen Filter für die auszuwählenden Daten

var queryResults = von c in Kunden von o in Bestellungen wo o

Datum > DatumUhrzeit

Jetzt – TimeSpan

FromDays(7) wählen Sie neu { c

Namen, ach

OrderId , o

Preise };

Select definiert eine Projektion oder die Form des Ergebnisses der LINQ-Abfrage

Eine Teilmenge von Eigenschaften wird häufig mithilfe anonymer Klassen (z

B

new { …, … } ) oder, beginnend mit C# 7.0, Werttupeln ( (…, …) ) projiziert

Group wird verwendet, um Elemente nach einem bestimmten Schlüssel zu gruppieren:

var groupedEmployees = from e in Employees group e by e

Abteilung ; // nach Abteilung gruppieren

Als Schlüssel kann auch ein anonymer Typ aus mehreren Schlüsseln verwendet werden:

var groupedEmployees = from e in Employees group e by new { e

Abteilung , z

Alter }; // nach Abteilung und Alter gruppieren

Into kann verwendet werden, um das Ergebnis einer Auswahl-, Gruppierungs- oder Join-Operation in einer temporären Variablen zu speichern.

var groupedEmployees = from e in Employees group e by e

Department in EmployeesByDepartment select new { Department = EmployeesByDepartment

Schlüssel , EmployeesByDepartment

Anzahl() };

OrderBy und ThenBy [ bearbeiten | Quelle bearbeiten ]

OrderBy und ThenBy werden verwendet, um eine Liste von Elementen in aufsteigender Reihenfolge zu sortieren

var groupedEmployees = from e in Employees orderby e

Alter // Mitarbeiter nach Alter ordnen; jüngste zuerst dannby e

name // gleichaltrige Mitarbeiter nach Namen bestellen; A-bis-Z sortieren select e ;

Mit OrderByDescending und ThenByDescending wird die Liste in absteigender Reihenfolge sortiert:

var groupedEmployees = from e in Employees orderby e

Alter absteigend // älteste zuerst dannby e

Name absteigend // von Z nach A sortieren select e ;

Reverse kehrt die Reihenfolge der Elemente um

Join ermöglicht Inner Joins, Group Joins und Left Outer Joins

Inner Join Ein Inner Join ordnet die äußere Datenquelle der inneren Datenquelle zu und gibt ein “flaches” Ergebnis zurück

Elemente der äußeren Datenquelle, die kein übereinstimmendes Element der inneren Datenquelle haben, werden verworfen

var productCategories = von c in Kategorien // äußere Datenquelle Join p in Produkte // innere Datenquelle auf c

CategoryId ist gleich p

CategoryId // Kategorien ohne Produkte werden ignoriert select new { c

Kategoriename , p

Produktname };

Gruppenbeitritt Ein Gruppenbeitritt erstellt eine hierarchische Ergebnismenge

Dabei werden die Elemente der inneren Datenquelle mit den entsprechenden Elementen der äußeren Datenquelle gruppiert

Elemente, für die es kein entsprechendes Element in der äußeren Datenquelle gibt, werden mit einem leeren Array verknüpft

var productCategories = von c in Kategorien Join p in Produkte auf c

CategoryId ist gleich p

CategoryId in productsInCategory select new { c

CategoryName , Products = productsInCategory };

Ein Gruppenbeitritt kann in SQL nicht zugeordnet werden, da SQL keine hierarchische Ergebnismenge zulässt

VB.NET hat ein eigenes Schlüsselwort, Group Join

Left Outer Join Ein Left Outer Join ordnet die äußere Datenquelle der inneren Datenquelle zu und gibt ein “flaches” Ergebnis zurück

Elemente in der äußeren Datenquelle, die kein übereinstimmendes Element in der inneren Datenquelle haben, werden mit einem Standardwert versehen

Um den Standardwert zu definieren, wird die Erweiterungsmethode DefaultIfEmpty() verwendet, die leere Enumerationen in eine Einzelelement-Enumeration mit einem Standardwert umwandelt:

var productCategories = von c in Kategorien Join p in Produkte auf c

CategoryId ist gleich p

CategoryId in productsInCategory von pic in productsInCategory

DefaultIfEmpty ( new Product ( CategoryId = 0 , ProductId = 0 , ProductName = String

Empty )) select new { c

Kategoriename , p

Produktname };

Let ermöglicht das Speichern des Ergebnisses einer Unterabfrage in einer Variablen zur späteren Verwendung in der Abfrage

var OrdersByProducts = von c in Kategorien Join p in Produkte auf c

CategoryId ist gleich p

CategoryId in productsByCategory lassen ProductCount = productsByCategory

Count () order by ProductCount select new { c

CategoryName , ProductCount };

Any wird verwendet, um festzustellen, ob eine Sequenz leer ist oder ein bestimmtes Prädikat enthält

bool containsAnyElements = Enumerable

Leer()

irgendein(); // false bool containsSix = Enumerable

Bereich ( 1 , 10 )

Beliebig ( x => x == 6 ); // wahr

Contains wird verwendet, um festzustellen, ob ein bestimmter Wert in einer Sequenz enthalten ist

bool containsSix = Aufzählbar

Bereich ( 1 , 10 )

enthält (6); // wahr

Skip and Take [Bearbeiten| Quelle bearbeiten ]

Überspringen wird verwendet, um eine bestimmte Anzahl von Elementen in einer Sequenz zu überspringen

Take wird verwendet, um eine maximale Anzahl von Elementen aus einer Sequenz auszuwählen

IEnumerable < int > Numbers = Enumerable

Bereich ( 1 , 10 )

Überspringen ( 2 )

nimm ( 5 ); // {3,4,5,6,7}

Außerdem sind die Erweiterungsmethoden SkipWhile() und TakeWhile() definiert, für die separate Schlüsselwörter in VB.NET definiert sind

Diese Methoden ermöglichen die Verwendung eines Prädikats, das definiert, welche Elemente übersprungen oder ausgewählt werden

Distinct wird verwendet, um eindeutige Elemente einer Sequenz auszuwählen

IEnumerable < int > MultipleNumbers = neue Liste < int > () { 0 , 1 , 2 , 3 , 2 , 1 , 4 }; IEnumerable < int > DistinctNumbers = MultipleNumbers

unterscheidbar(); // {0,1,2,3,4}

Union, Intersect und Except [Bearbeiten| Quelle bearbeiten ]

Die Mengenoperatoren Union, Intersect und Except können für eine Liste von Elementen verwendet werden:

var NumberSet1 = { 1 , 5 , 6 , 9 }; var NumberSet2 = { 4 , 5 , 7 , 11 }; var union = NumberSet1

Union( NumberSet2 ); // 1,5,6,9,4,7,11 var schneiden = NumberSet1

Schnittmenge ( NumberSet2 ); // 5 var außer = NumberSet1

Außer( NumberSet2 ); // 1,6,9

Aggregate wird verwendet, um eine Aggregatfunktion auf eine Datenquelle anzuwenden

var nums = neu []{ 1 , 2 , 3 , 4 , 5 }; var sum = nums

Aggregate ( ( a , b ) => a + b ); // Summe = 1+2+3+4+5 = 15

Wichtige Aggregatfunktionen sind ebenfalls vordefiniert

Zu den vordefinierten Aggregatfunktionen gehören Count() , LongCount() , Sum() , Min() , Max() und Average().

Zip kombiniert zwei Sequenzen miteinander, bis eine Sequenz endet

IEnumerable < string > Days = new List < string >() { “Montag” , “Dienstag” , “Mittwoch” , “Donnerstag” , “Freitag” , “Samstag” , “Sonntag” }; IEnumerable < int > Numbers = Enumerable

Bereich ( 1 , 10 ); // {1,2,3,4,5,6,7,8,9,10} // Zahlen 8..10 werden ignoriert IEnumerable < string > NumberedDays = Days

Zip ( Zahlen , ( Tag , Zahl ) => String

Format ( “{0}:{1}” , Zahl , Tag ) ); // {“1:Montag”, “2:Dienstag”,. .., “7:Sonntag”}

Concat hängt eine weitere Sequenz desselben Typs an eine Sequenz an

SequenceEqual prüft, ob zwei Sequenzen gleich lang sind und ob die Elemente an der jeweiligen Position der entsprechenden Sequenzen gleich sind

Zum Vergleich werden entweder die IEqualityComparer-Schnittstelle, die Equals()-Methode von TSource oder die GetHashCode()-Methode abgefragt

SelectMany[15] wird im Wesentlichen verwendet, um eine Hierarchie zu glätten

SelectMany funktioniert wie der Bind-Operator >>= , auch Schaufel genannt, in Haskell

Klasse Buch { öffentlicher String Titel { erhalten ; setzt ; } öffentliche Liste Autoren { get ; setzt ; } } Klasse Autor { öffentlicher String Name { get ; setzt ; } } class Foo { public IEnumerable < string > GetAuthorsFromBooks ( IEnumerable < Book > books ) { // Eingabemonade: Enumerable Book Author // Ausgabemonade: Enumerable Author return books

SelectMany ( Buch => Buch

Autoren ); } }

Ein typischer Anwendungsfall zum Vereinfachen einer Hierarchie besteht darin, alle Dateien in einem Verzeichnis und den Unterverzeichnissen des Verzeichnisses aufzulisten

IEnumerable < string > GetFilesInSubdirectories ( string rootDirectory ) { var directoryInfo = new DirectoryInfo ( rootDirectory ); // Stammverzeichnis abrufen return directoryInfo

GetDirectories () // Verzeichnisse im Stammverzeichnis abrufen

SelectMany ( dir => GetFilesInSubdirectories ( dir

FullName )) // rekursives Abflachen der Verzeichnishierarchie

Concat( directoryInfo

GetFiles ()

Select ( file => file

FullName )); // den Dateinamen für jede Datei in den Verzeichnissen abrufen }

LINQ definiert verschiedene Selektoren für skalare Ergebnisse:

Skalare LINQ-Selektoren Methode Ergebnis ElementAt(n) Gibt das n-te Element zurück, wenn die Abfrage ein oder mehrere Ergebnisse zurückgibt

Löst eine Ausnahme aus, wenn weniger als n Ergebnisse zurückgegeben werden

ElementAtOrDefault(n) Gibt das n-te Element zurück, wenn die Abfrage ein oder mehrere Ergebnisse zurückgibt

Gibt den Standardwert zurück, wenn weniger als n Ergebnisse zurückgegeben werden

First() Gibt das erste Element zurück, wenn die Abfrage ein oder mehrere Ergebnisse zurückgibt

Löst eine Ausnahme aus, wenn keine Ergebnisse zurückgegeben werden

FirstOrDefault() Gibt das erste Element zurück, wenn die Abfrage ein oder mehrere Ergebnisse zurückgibt

Gibt den Standardwert zurück, wenn keine Ergebnisse zurückgegeben werden

Last() Gibt das letzte Element zurück, wenn die Abfrage ein oder mehrere Ergebnisse zurückgibt

Löst eine Ausnahme aus, wenn keine Ergebnisse zurückgegeben werden

LastOrDefault() Gibt das letzte Element zurück, wenn die Abfrage ein oder mehrere Ergebnisse zurückgibt

Gibt den Standardwert zurück, wenn keine Ergebnisse zurückgegeben werden

Single() Gibt das einzelne Element zurück, das die Anfrage zurückgegeben hat

Löst eine Ausnahme aus, wenn null oder mehr Ergebnisse zurückgegeben werden

SingleOrDefault() Gibt das eine Element zurück, das die Anfrage zurückgegeben hat

Gibt den Standardwert zurück, wenn keine Ergebnisse zurückgegeben werden

Löst eine Ausnahme aus, wenn mehrere Ergebnisse zurückgegeben werden

Erweitern von LINQ [ Bearbeiten | Quelle bearbeiten ]

Definition eigener Monaden [ bearbeiten | Quelle bearbeiten ]

LINQ kann auf jede Monade angewendet werden

Monaden sind hier Adapter (englisch: Wrapper) für einen bestimmten Typ

Vordefinierte Monaden sind z.B

IEnumerable , IList , Nullable and Task.

Es können aber auch eigene Monaden wie zB IRepository oder IHandler erstellt werden um die zu erweitern Funktionalität von LINQ

Dazu müssen entsprechende Erweiterungsmethoden definiert werden

Die Verwendung von Monaden dient dazu, die Menge an Boilerplate-Code zu reduzieren

Die einfachste Monade ist die Identität, die in. NET allgemein als Identity bezeichnet wird:

öffentliche Klasse Identität {öffentlicher T-Wert {get; privater Satz; } öffentliche Identität (T-Wert) {Wert = Wert; } }

Für diese Klasse können nun folgende Erweiterungsmethoden erstellt werden:

// Unit-Methode // Wandelt jeden Wert in eine Identität um public static Identity < T > ToIdentity < T >( this T value ) { return new Identity < T >( value ); } // bind method // verknüpft Funktionen, die eine Identität zurückgeben public static Identity < B > Bind < A , B >( this Identity < A > m , Func < A , Identity < B >> f ) { return f ( m

Wert ); }

Diese Monade kann nun als Lambda-Ausdruck (als beliebige Komposition) verwendet werden:

var hallo = “Hallo”

ToIdentity()

Bind ( h => “Monad”

ToIdentity ()

Bind ( m => String

Format ( “{0} {1}!” , h , m ) )); Konsole

WriteLine ( hallo

Value ); // “Hallo Monade!”

Um die Monade in LINQ zu verwenden, muss eine SelectMany()-Erweiterungsmethode implementiert werden

Dies ist nur ein Alias ​​für Bind()

Es gibt also eine Möglichkeit

Umbenennen/Einkapseln der bind()-Methode Erstellen und Umbenennen/Einkapseln der bind()-Methode mit Funktionszusammenstellung both:

// SelectMany = Öffentliche statische Identität binden < B > SelectMany < A , B > ( this Identity < A > m , Func < A , Identity < B >> f ) { return Bind ( m , f ); // alternativ mit aufgelöstem Bind(): // return f(m.Value); } // Bindung mit Funktionskomposition public static Identity < C > SelectMany < A , B , C > ( this Identity < A > m , Func < A , Identity < B >> f , Func < A , B , C > select ) { return select ( m

Value , m

Bind ( f )

Value )

ZuIdentität(); // alternativ mit aufgelöstem Bind(): // return select(m.Value, f(m.Value).Value).ToIdentity(); }

Die Monade kann nun mit LINQ-Schlüsselwörtern verarbeitet werden:

var hallo = von h in “Hallo”

ToIdentity() von m in “Monad”

ToIdentity () wählen Sie String

Format( “{0} {1}!” , h , m ); Konsole

WriteLine ( hallo

Value ); // “Hallo Monade!”

Eine weitere einfache Monade ist Maybe , die ähnlich wie die Nullable -Struktur[16][17] funktioniert

Die Maybe-Monade kann auf verschiedene Arten implementiert werden: Variante 1 HasValue-Eigenschaft bestimmt, ob Maybe Nothing (d

h

leer) ist

Definition der Monade:

Klasse Vielleicht < T > { public Readonly Statisch Vielleicht < T > Nichts = neu Vielleicht < T > (); öffentlicher T-Wert { erhalten ; privater Satz; } public bool HasValue {get; privater Satz; } Vielleicht () { HasValue = false ; } public Vielleicht (T-Wert) {Wert = Wert; HasValue = true ; } public override string ToString () { return (HasValue)? Werte

ToString (): Zeichenkette

Leer ; } }

Definition der Einheitsmethode:

public static Vielleicht < T > ToMaybe < T > ( this T value ) { return new Maybe < T > ( value ); }

Methodendefinition binden:

privat statisch Vielleicht < U > Bind < T , U > ( this Vielleicht < T > m , Func < T , Vielleicht < U >> f ) { return ( m

HasValue ) ? f ( m

Wert ) : Vielleicht < U >

Gar nichts ; } public static Vielleicht < U > SelectMany < T , U > ( this Vielleicht < T > m , Func < T , Vielleicht < U >> f ) { return Bind < T , U > ( m , f ); } public static Maybe < C > SelectMany < A , B , C > ( this Maybe < A > m , Func < A , Maybe < B >> f , Func < A , B , C > select ) { return m

Bind ( x => f ( x )

Bind ( y => select ( x , y )

ToMaybe ())); }

Verwenden:

// Null-Propagation von Nullables var r = von x in 5

ToMaybe () von y in Maybe < int >

Nichts auswählen x + y ; Konsole

WriteLine( r

Wert ); // Zeichenkette.Leer

Variante 2 konkreter Typ bestimmt, ob Nichts oder Etwas

Definition der Monade:

öffentliche Schnittstelle Vielleicht < T >{} öffentliche Klasse Nichts < T > : Vielleicht < T > { public override string ToString () { return String

See also  Famous Rebel - Not Another Digital Marketing Agency - Promo Video 2020 digital marketing agency

Leer ; } } öffentliche Klasse Etwas < T > : Vielleicht < T > { public T Value { get ; privater Satz; } public Etwas (T-Wert) {Wert = Wert; } public override string ToString () { Rückgabewert

ToString(); } }

Definition der Einheitsmethode:

public static Vielleicht < T > ToMaybe < T >( this T value ) { return new Something < T >( value ); }

Methodendefinition binden:

private static Maybe < B > Bind < A , B >( this Maybe < A > m , Func < A , Maybe < B >> f ) { var some = m as Something < A >; zurück (einige == null)? new Nothing < B >() : f ( some

Value ); } public static Vielleicht < B > SelectMany < A , B > ( this Vielleicht < A > m , Func < A , Vielleicht < B >> f ) { return Bind < A , B > ( m , f ); } public static Maybe < C > SelectMany < A , B , C > ( this Maybe < A > m , Func < A , Maybe < B >> f , Func < A , B , C > select ) { return m

Bind ( x => f ( x )

Bind ( y => select ( x , y )

ToMaybe ())); }

Verwenden:

var r = from x in 5

ToMaybe () // Something from y in new Nothing () select x + y ; Konsole

WriteLine(r); // Zeichenkette.Leer

Eigene Operatoren definieren [ edit | Quelle bearbeiten ]

Operatoren in LINQ können durch Bereitstellen einer geeigneten Erweiterungsmethode erweitert werden

Hier können auch Standardoperatoren überschrieben werden

Beispiel 1 Wiederkehrende Personen, die an einem bestimmten Datum Geburtstag haben

public static class PersonExtensions { public static IEnumerable < TPerson > FilterByBirthday < TPerson >( this IEnumerable < TPerson > persons ) where TPerson : Person { return FilterByBirthday ( persons , DateTime

Now ); } public static IEnumerable < TPerson > FilterByBirthday < TPerson > ( this IEnumerable < TPerson > persons , DateTime date ) where TPerson : Person { var birthdayPersons = select p in persons where p

Geburtstag

Tag == Datum

Tag, an dem p

Geburtstag

Monat == Datum

Monat auswählen p ; // gebe die Liste der Personen für jeden zurück ( Person p in birthdayPersons ) yield return p ; } }

Aufrufen der neuen Erweiterungsmethode

personsToCongratulate = persons

FilterNachGeburtstag();

Beispiel 2 Definition einer Methode, die die Menge der ältesten Personen in einer Liste zurückgibt

Es soll auch möglich sein, eine Delegate-Funktion anzugeben, um beispielsweise Verstorbene herauszufiltern

public static class PersonExtensions { public static IEnumerable < TPerson > Oldest < TPerson >( this IEnumerable < TPerson > source , Func < TPerson , Boolean > predicate ) where TPerson : Person { // Personen nach Kriterien filtern var persons = from p in source where Prädikat (p) wähle p aus; // bestimme das Alter der ältesten Personen int oldestAge = ( from p in persons orderby p

Age descending select p

Age )

Erste(); // erhalte die Liste der ältesten Personen var oldestPersons = wähle p in Personen aus, wobei p

Alter == jüngstes Alter select p ; // gebe die Liste der ältesten Personen für jeden zurück ( Person p in oldestPersons ) yield return p ; } public static IEnumerable < TPerson > Oldest ( this IEnumerable < TPerson > source ) where TPerson : Person { return Oldest ( source , x => true ); } }

Aufrufen der neuen Erweiterungsmethode

ältestenLebendenPersonen = Personen

Älteste ( p => p

Living == true );

Implementieren Ihres eigenen LINQ-Anbieters [ bearbeiten | Quelle bearbeiten ]

Das Schreiben eines eigenen LINQ-Anbieters ist eine gute Idee, wenn Sie einen Dienst aufrufen möchten, der eine bestimmte Syntax (SQL, XML usw.) erfordert

Um dies zu ermöglichen, muss die IQueryable-Schnittstelle implementiert werden

Mit dieser Schnittstelle kann der LINQ-Ausdrucksbaum analysiert und in das entsprechende Zielformat konvertiert werden

Reaktive Erweiterungen [ Bearbeiten | Quelle bearbeiten ]

Die Reactive Extensions (kurz: Rx) sind eine Erweiterung von LINQ, die auf IObservable anstatt auf IEnumerable arbeitet

Es ist eine Implementierung des Observer-Entwurfsmusters

Vergleich von Rx mit LINQ Operationstyp nach dem CQS-Prinzip Command (Command) Query (Query) Definition hat Seiteneffekte Gibt Daten zurück Pattern Observer Iterator Implementierung in. NET Framework Rx (IObservable) LINQ (IEnumerable) Pattern Pipes und Filter Map/Reduce Asynchronicity Alle Befehle können asynchron ausgeführt werden

Ergebnisse werden mit asynchronen Benachrichtigungen oder gemeldet

Für die Statusabfrage zurückgegebene Token

Die Rx erlauben eine ereignisgesteuerte Programmierung ohne Callback-Funktionen

Gelegentlich werden die Rx als „LINQ to Events“ bezeichnet

LINQ to DataSet [ bearbeiten | Quelle bearbeiten ]

Das folgende Beispiel zeigt das Abfragen einer Tabelle mit Linq

Unter folgendem Pfad ist eine vorhandene Access-Datenbank erforderlich: C:\database.mdb mit einer Produkttabelle, die die Felder ID, Name und EanCode enthält

Die Tabelle wird als Klasse modelliert und über Attribute mit Metadaten versehen, die die Abbildung auf die Datenbank beschreiben

Dazu muss im Projektordner unter References.

using System ein Verweis auf die System.Data.Linq.Dll hinzugefügt werden. Data.Linq.Mapping ; [Table(Name = “Products”)] class Product { [Column(Name = “id”, IsPrimaryKey = true)] public int ID ; [Column(Name = “Name”)] public string Name ; [Column(Name = “Ean”)] public string EanCode ; }

Jetzt können Sie die Tabelle abfragen

Im folgenden Beispiel werden alle Produkte aufgelistet, deren Produktname mit einem A beginnt

Die Produkte sind nach ihrer ID sortiert.

mit System.Configuration ; // für ConfigurationManager mit System.Data ; // für alle Schnittstellentypen mit System.Data.Common ; // für DbProviderFactories class Foo () { public static void Main () { // Verbindungseinstellungen von app.config abrufen var cs = ConfigurationManager

ConnectionStrings[ “MeinVerbindungsString” ]; var factory = DbProviderFactories

GetFactory(cs.ProviderName); using ( IDbConnection connection = new factory

CreateConnection ( cs

ConnectionString )) { connection

offen(); DataContext db = neuer DataContext ( Verbindung ); Tabelle < Produkt > Tabelle = db

GetTable < Produkt > (); var query = from p in table wobei p

Nachname

StartsWith (“A”) reihenfolge nach p

ID auswählen p ; foreach (var p in Abfrage) Konsole

WriteLine( p. name ); } } }

Alternativ können auch sogenannte Erweiterungsmethoden mit Lambda-Ausdrücken verwendet werden

Auch LINQ-Abfragen werden vom Compiler in solche übersetzt

var query = products

Wo ( p => p

Name

StartsWith ( “A” ))

OrderBy ( p => p. id ); foreach ( var Produkt in Abfrage ) { Console

WriteLine ( Produktname

Name ); }

Mit der Funktion Single kann ein einzelner Datensatz ermittelt werden

Das folgende Beispiel findet den Datensatz mit der ID 1.

Console

WriteLine ( products

Single ( p => p

ID == 1 )

Name );

Wenn die Abfrage jedoch mehrere Datensätze findet, wird eine InvalidOperationException ausgelöst

LINQ to XML [ Bearbeiten | Quelle bearbeiten ]

Unten sehen Sie ein Beispiel, das zeigt, wie LINQ verwendet werden kann, um Informationen aus einer XML-Datei zu lesen

Als XML-Datei dient die folgende Beispiel-XML-Datei.[18]

Ellen Adams 123 Maple Street Mill Valley CA 10999 USA
Tai Yee 8 Oak Avenue Old Town PA 95819 < /Zip> USA
Bitte hinterlassen Sie Pakete in einem Schuppen neben der Einfahrt

Rasenmäher 1 148,95 Confirm this is electric Babyphone 2 39.98 1999-05-21 < /ShipDate>

Wollte man beispielsweise die Artikelnummern (PartNumber) aller Einträge vom Typ auslesen, könnte man folgenden C#-Code[19]

verwenden

XElement PurchaseOrder = XElement

Load( “purchase_order.xml” ); IEnumerable < string > items = von Artikel in PurchaseOrder

Nachkommen (“Item”) wählen (string) item aus

Attribute( “PartNumber” ); foreach ( var item in items ) { Console

WriteLine (partNumbers

ElementAt (i)); } // Ausgabe: // 872-AA // 926-AA

Eine andere Möglichkeit wäre, mit einer bedingten Abfrage alle Artikel auszuwählen, deren Wert größer als 100 $ ist

Außerdem könnte man das Ergebnis der Abfrage mit orderby nach den Artikelnummern sortieren

XElement Bestellung = XElement

Load( “purchase_order.xml” ); IEnumerable < XElement > items = von Artikel in PurchaseOrder

Nachkommen (“Item”) wobei (int) item

Artikel (“Menge”) * (dezimal) Artikel

Item ( “USPrice”) > 100 orderby ( string ) item

Item( “PartNumber” ) Artikel auswählen ; foreach ( var item in items ) { Console

WriteLine ( item

Attribut (“PartNumber”)

Value ); } // Ausgabe: // 872-AA

LINQ mit Rx [Bearbeiten| Quelle bearbeiten ]

Viele der Erweiterungsmethoden von LINQ sind auch in Rx vorhanden

Im folgenden Beispiel wird die Filterung mithilfe der Where()-Klausel durchgeführt:

mit System ; mit System.Reactive.Subjects ; mit System.Reactive.Linq ; class Program { // Hilfsfunktionen private static Func < int , bool > isEven = n => n % 2 == 0 ; private statische Func < int , bool > isOdd = n => ! isEven( n ); private statische Func < int , bool > isDivisibleBy5 = n => n % 5 == 0 ; static void Main () { var Betreff = neuer Betreff < int > (); using (subject

Where ( isEven )

Where ( isDivisibleBy5 )

Subscribe ( _ => Console

WriteLine ( “FizzBuzz” ))) using ( subject

Where ( isEven )

Where (! isDivisibleBy5 )

Subscribe ( _ => Console. WriteLine( “Fizz” ))) mit ( Betreff

Where ( isOdd )

Where ( isDivisibleBy5 )

Subscribe ( _ => Console

WriteLine ( “Buzz” ))) using ( subject

Where ( isOdd )

Where (! isDivisibleBy5 ).Subscribe ( Console

WriteLine )) { Observable

Bereich ( 1 , 100 )

Abonnieren( Betreff

OnNext ); } } }

Obwohl die Erweiterungsmethoden von Rx auf einer anderen Monade definiert sind ( IObservable anstelle von IEnumerable ), kann auch die Comprehension-Syntax von LINQ verwendet werden, da die Namen der Erweiterungsmethoden identisch sind

Eine andere Möglichkeit ist daher: using System ; mit System.Text ; mit System.Reactive.Linq ; Klasse Programm { statischer String IntToFizzBuzz ( int n ) { neuer StringBuilder ( 8 ) zurückgeben

Append (( n % 2 == 0 ) ? “Fizz” : string

Empty )

Append (( n % 5 == 0 )? “Buzz” : string

Empty )

Append (( n % 2 != 0 && n % 5 != 0 )? n

ToString () : string

Empty )

ToString(); } static void Main (string [] args) { var numbers = Observable

Bereich (1, 100); var fizzBuzz = from n in numbers select IntToFizzBuzz ( n ); zischendes Summen

Abonnieren ( Console

WriteLine ); } }

Özgür Aytekin: LINQ – Theorie und Praxis für Einsteiger

Addison-Wesley, München 2008, ISBN 978-3-8273-2616-4.

Addison-Wesley, München 2008, ISBN 978-3-8273-2616-4

Andreas Kuehnel: Visual C# 2010

Galileo Press, Bonn 2010, ISBN 978-3-8362-1552-7, LINQ to Objects, S

465-496.

Galileo Press, Bonn 2010, ISBN 978-3-8362-1552-7, LINQ to Objects,

Paolo Pialorsi, Marco Russo: Datenbankprogrammierung mit Microsoft LINQ

Microsoft Press Deutschland, Unterschleißheim 2008, ISBN 978-3-86645-428-6.

Microsoft Press Deutschland, Unterschleißheim 2008, ISBN 978-3-86645-428-6

Paolo Pialorsi, Marco Russo: Programmierung von Microsoft LINQ in Microsoft. NET Framework 4

Microsoft Press, Sebastopol CA 2010, ISBN 978-0-7356-4057-3.

Microsoft Press, Sebastopol CA 2010, ISBN 978-0-7356-4057-3

Paolo Pialorsi: Microsoft SharePoint 2010-Entwicklerbuch

Microsoft Press Deutschland, Unterschleißheim 2011, ISBN 978-3-86645-545-0, LINQ to SharePoint, S

113-188.

Microsoft Press Deutschland, Unterschleißheim 2011, ISBN 978-3-86645-545-0, LINQ to SharePoint,

Jesse Liberty, Paul Betts: Programmieren von reaktiven Erweiterungen und LINQ

Apress, 2011, ISBN 978-1-4302-3747-1, p

184.

LINQ in anderen Programmiersprachen [Bearbeiten| Quelle bearbeiten ]

F#

MSDN

Microsoft, abgerufen am 18.05.2014 (Englisch, LINQ-Variante in F#)

Abfrageausdrücke (F#)

In:Microsoft,(Englisch, LINQ-Variante in F#).

Breeze.js

Abgerufen am 18.05.2014 (Englisch, Abfragen im LINQ-Stil für den HTML5-Webspeicher).

CodePlex

Abgerufen am 03.04.2013 (Englisch, LINQ für JavaScript)

Linq

js

In:(Englisch, LINQ für JavaScript).

CodePlex

Abgerufen am 3

April 2013 (Englisch, LINQ to Objects for JavaScript).

JSINQ

In:(Englisch, LINQ to Objects for JavaScript).

Java

PHP

GitHub

Abgerufen am 5

Oktober 2020 (Englisch, LINQ für PHP)

phinq

In:(Englisch, LINQ für PHP).

GitHub

Abgerufen am 5

Oktober 2020 (Englisch, LINQ für PHP)

PHPLinq

In: (Englisch, LINQ für PHP).

GitHub

Abgerufen am 5

Oktober 2020 (Englisch, Yet Another LINQ to Objects for PHP)

YaLinqo

In:(English, Yet Another LINQ to Objects for PHP).

Python

Mit VB.NET eine Excel-Datei auslesen und ab einer bestimmten Zeile hineinschreiben Update

Video unten ansehen

Neue Informationen zum Thema vb net excel datei auslesen

In diesem Video verwende ich die Programmiersprache VB.NET, um eine Excel-Datei zu öffnen, die erste freie Zeile zu suchen, dann zu schreiben. Als Zweites wird gezeigt, wie man alles ausliest. Außerdem wird gezeigt, wie man die DLLs aus dem NuGet-Paket-Manager hinzufügt.
———————————————————
In this video, I use the VB.NET programming language to open an Excel file, find the first free row, and then write there. Second, I’ll show you how to read out all the data. I will also show you how to add the DLLs from the NuGet package manager.

vb net excel datei auslesen Einige Bilder im Thema

 New Mit VB.NET eine Excel-Datei auslesen und ab einer bestimmten Zeile hineinschreiben
Mit VB.NET eine Excel-Datei auslesen und ab einer bestimmten Zeile hineinschreiben Update

Volvo VIDA DiCE 2014D – asie.reitausbildung-reese.de New Update

22/03/2022 · VB dim To add a time delay, simply use the PING command to issue a NUL ping to the loopback address: PING -n 5 127. To open the CMD command prompt on the Windows operating system, press the Windows Key + R and open the Run window. Wifi. The flag for Deferred response creation will be set.

+ ausführliche Artikel hier sehen

Read more

04:59 Es ist besser als Zunder!

Suchen Sie einen Mann oder eine Frau? Männer Frauen

Was ist dein Geschlecht? Männer Frauen

Sind Sie älter als 18 Jahre? ja nein Bist du damit einverstanden, beim Sex mit einem Partner, den du auf unserer Seite triffst, ein Kondom zu benutzen? ja Nein

VB.NET Tutorial – Open and Read Excel files/ Import Excel file to DataGridView | FoxLearn Update

Video ansehen

Neue Informationen zum Thema vb net excel datei auslesen

Programming in Visual Basic .Net: Open and Read Excel files/ Import Excel file to DataGridView using ExcelDataReader, ExcelDataReader.DataSet in VB.NET Windows Forms Application.
Website: https://foxlearn.com
Lightweight and fast library written in C# for reading Microsoft Excel files (2.0-2007).
ExcelDataReader extension for reading Microsoft Excel files into System.Data.DataSet.

vb net excel datei auslesen Ähnliche Bilder im Thema

 Update VB.NET Tutorial - Open and Read Excel files/ Import Excel file to DataGridView | FoxLearn
VB.NET Tutorial – Open and Read Excel files/ Import Excel file to DataGridView | FoxLearn New

Google New Update

We would like to show you a description here but the site won’t allow us.

+ hier mehr lesen

Control Excel from VB.NET project. New

Video ansehen

Weitere hilfreiche Informationen im Thema anzeigen vb net excel datei auslesen

This tutorial will show you how to connect and control Excel from your VB.NET application. I have provided a method of scrolling the cells in the workbook.. Hope this helps.

vb net excel datei auslesen Ähnliche Bilder im Thema

 New Control Excel from VB.NET project.
Control Excel from VB.NET project. Update

Google Aktualisiert

We would like to show you a description here but the site won’t allow us.

+ mehr hier sehen

Visual Basic .Net | Export DataGridView to Excel and Import Excel to DataGridView with VB .NET Update

Video unten ansehen

Weitere Informationen zum Thema vb net excel datei auslesen

Visual Basic .Net | Export DataGridView to Excel and Import Excel to DataGridView with VB .NET . In this project video I use Visual Studio 2015 and Microsoft Office 2007.
***********************************************
Thanks for watching \u0026 don’t forget to like, comment and Subscribe…
***********************************************
***********************************************
Download source code here : https://drive.google.com/open?id=15pMVGhQ_JgcJmTfSToT4cUsUJF7bw__G
***********************************************
For other video tutorials on this channel, please see this playlist:
– Basic4Android (B4A) Tutorials : https://www.youtube.com/watch?v=-BIq32-qEgA\u0026list=PLnXsmScWzcm6RVlhPM7qg_OJ2N8OpV99d
– Electronics Tutorials : https://www.youtube.com/watch?v=rLdsWt6EP6w\u0026list=PLnXsmScWzcm766h5Dn4AJjbJRzDfCPh4h
– Arduino Tutorials : https://www.youtube.com/watch?v=A3_EBZqCG5s\u0026list=PLnXsmScWzcm48hvcTTRAUFcP5Fjd4u8cS
– Great Cow Basic Tutorials : https://www.youtube.com/watch?v=orHrLmEvp0o\u0026list=PLnXsmScWzcm7xejzacm5cKJMIh_tXXxN8
– Bascom Avr Tutorials : https://www.youtube.com/watch?v=JYKSkNQq9eM\u0026list=PLnXsmScWzcm6F9gX1wYenqjKdqVSM7d6B
– VB .NET Tutorials : https://www.youtube.com/watch?v=Sy2vjWO0ydM\u0026list=PLnXsmScWzcm4g8AWEJ6WXVUOBh_cWF5_z
***********************************************
Reference :
https://www.codeproject.com/Questions/655172/Import-data-from-excel-to-datagrid-view-in-vb-net
https://www.youtube.com/watch?v=gAgoQwYV5Sk
https://stackoverflow.com/questions/2483659/interop-type-cannot-be-embedded/4553402#4553402
***********************************************
Download Visual Studio : https://www.visualstudio.com/
***********************************************
Music Background :
Song: Envici – November (Original Instrument)
Music provided by Twin Pillars Records: https://youtu.be/vRrp3Gw045Q
Artists: Envici
Download: https://goo.gl/aDiQhU
Lights by Sappheiros https://soundcloud.com/sappheirosmusic
Creative Commons — Attribution 3.0 Unported — CC BY 3.0
https://creativecommons.org/licenses/by/3.0/
Music promoted by Audio Library https://youtu.be/-lbbHQbZNKg
Song: Ikson – Do It (Vlog No Copyright Music)
Music promoted by Vlog No Copyright Music.
Video Link: https://youtu.be/3uARld40fpE
***********************************************

vb net excel datei auslesen Einige Bilder im Thema

 Update Visual Basic .Net | Export DataGridView to Excel and Import Excel to DataGridView with VB .NET
Visual Basic .Net | Export DataGridView to Excel and Import Excel to DataGridView with VB .NET New

Google Neueste

We would like to show you a description here but the site won’t allow us.

+ hier mehr lesen

C# Excel Tutorial – #1 – Open and Read Excel Files New Update

Video ansehen

Weitere hilfreiche Informationen im Thema anzeigen vb net excel datei auslesen

Quick guide how to open and read excel file through C# application you are making.

vb net excel datei auslesen Ähnliche Bilder im Thema

 New Update C# Excel Tutorial - #1 - Open and Read Excel Files
C# Excel Tutorial – #1 – Open and Read Excel Files Update

ExifTool by Phil Harvey Update

09/02/2022 · The MacOS package installs the ExifTool command-line application and libraries in /usr/local/bin. After installing, type “exiftool” in a Terminal window to run exiftool and read the application documentation.Read the installation instructions for help installing ExifTool on Windows, MacOS and Unix systems.. Click here for the SHA1 and MD5 checksums to verify …

+ mehr hier sehen

Read more

Metainformationen lesen, schreiben und bearbeiten!

Ebenfalls verfügbar –> Dienstprogramm zum Reparieren von Nikon NEF-Bildern, die durch Nikon-Software beschädigt wurden

Hinweis: Wenn exiftool.org ausfällt, liegt dies am beschissenen DreamHost-Webhosting, das eine Website mit „unbegrenztem Datenverkehr“ deaktiviert, wenn ein einzelner Bot die Website mit einer mäßigen Last hämmert

Eine alternative ExifTool-Homepage ist unter http://exiftool.sourceforge.net/ verfügbar

ExifTool ist eine plattformunabhängige Perl-Bibliothek plus eine Befehlszeilenanwendung zum Lesen, Schreiben und Bearbeiten von Metainformationen in einer Vielzahl von Dateien

ExifTool unterstützt viele verschiedene Metadatenformate, darunter EXIF, GPS, IPTC, XMP, JFIF, GeoTIFF, ICC-Profil, Photoshop IRB, FlashPix, AFCP und ID3, Lyrics3 sowie die Herstellerhinweise vieler Digitalkameras von Canon, Casio, DJI, FLIR, FujiFilm, GE, GoPro, HP, JVC/Victor, Kodak, Leaf, Minolta/Konica-Minolta, Motorola, Nikon, Nintendo, Olympus/Epson, Panasonic/Leica, Pentax/Asahi, Phase One, Reconyx, Ricoh, Samsung , Sanyo, Sigma/Foveon und Sony.

ExifTool ist auch als eigenständige ausführbare Windows-Datei und als MacOS-Paket erhältlich: (Beachten Sie, dass diese Versionen nur die ausführbare Datei und nicht die HTML-Dokumentation oder andere Dateien der vollständigen Distribution enthalten Oben.)

Die eigenständige ausführbare Windows-Datei erfordert kein Perl

Laden Sie einfach das Archiv herunter und entpacken Sie es, doppelklicken Sie dann auf „exiftool(-k).exe“, um die Anwendungsdokumentation zu lesen, ziehen Sie Dateien und Ordner per Drag-and-Drop, um Metainformationen anzuzeigen, oder benennen Sie sie in „exiftool.exe“ um Befehlszeile verwenden

Läuft auf allen Windows-Versionen

(Hinweis: Oliver Betz stellt einen alternativen ExifTool-Windows-Installer zur Verfügung, der einige Probleme der selbstextrahierenden Archivversion oben vermeidet

Bitte posten Sie hier, wenn Sie irgendwelche Probleme/Kommentare mit dieser Version haben.)

Das MacOS-Paket installiert die ExifTool-Befehlszeilenanwendung und Bibliotheken in /usr/local/bin

Geben Sie nach der Installation „ exiftool “ in ein Terminalfenster ein, um exiftool auszuführen, und lesen Sie die Anwendungsdokumentation.

Lesen Sie die Installationsanweisungen, um Hilfe bei der Installation von ExifTool auf Windows-, MacOS- und Unix-Systemen zu erhalten

awk” in Verbindung mit ExifTool, dann haben Sie wahrscheinlich noch nicht die volle Leistungsfähigkeit von ExifTool entdeckt

Lesen Sie mehr über die Optionen -ext , -if , -p und -tagsFromFile in der Anwendungsdokumentation

(Dies ist der häufige Fehler Nummer 3.)

„Meiner Erfahrung nach ist nichts, aber nichts so vollständig, kraftvoll und flexibel wie Phil Harveys Exiftool … Ich habe noch nie etwas gesehen, das in der gleichen Leistungsklasse liegt.“ – dpreview-Forum

“Obwohl viele Bildwerkzeuge verfügbar sind, kommt nichts dem Zugriff auf/der Aktualisierung der Metadaten wie ExifTool nahe” – mergs Blog

“Schnell, zuverlässig und erstaunlich umfassend. ..” – CPAN-Bewertungen

“..

die einzige kostenlose Software, die die detailliertesten Exif-Daten von /irgendeinem/ Werkzeug erhält, das ich gefunden habe.” – Gnome-Mail-Archive

„ExifTool lässt jeden anderen EXIF-Leser (und Schreiber) als ich gesehen habe, einschließlich der Leser der Kamerahersteller, lahm aussehen.“ – photo.net Nikon-Forum

“Wahnsinnig tolles Tool mit langer Lernkurve…” – Adobe Forums

“ExifTool hat sich bei der Erstellung unserer benutzerdefinierten Tesla-Bildergalerie als hervorragend erwiesen

Wir sind in der Lage, Bildmetadaten aus unserer Benutzerbasis zu sammeln und diese in Entwicklungsiterationen zu integrieren, um unsere Plattform kontinuierlich zu optimieren. ..” – Find My Electric

“..

es ist super genial, es ist super zuverlässig und nach vielen Jahren der Entwicklung wird es immer noch aktualisiert!” – P_W999-Blog

“..

es ist die Mutter aller EXIF-Dienstprogramme; das BFG der Metadaten-Extraktion; der Pan Galactic Gargle Blaster der EXIF-Tools. .

Dieses Ding saugt das letzte bisschen Metadaten aus jeder Bilddatei du wirfst darauf!” – Öffnen Sie Fotografie-Foren

“..

für mich ist das totales Kauderwelsch.” – Reddit-Linux-Fragen

ExifTool kann Dateien in den folgenden Formaten lesen, schreiben und/oder erstellen

Ebenfalls aufgeführt sind die Unterstützungsebenen für EXIF, IPTC, XMP, ICC_Profile und andere Metadatentypen für jedes Dateiformat

ExifTool kann die folgenden Arten von Metainformationen in JPEG-Bildern lesen, schreiben und/oder erstellen:

Erfordert Perl 5.004 oder höher

Es sind keine weiteren Bibliotheken oder Software erforderlich, aber einige optionale Perl-Module können hinzugefügt werden, um bestimmte ExifTool-Funktionen zu aktivieren (Einzelheiten finden Sie im Abschnitt ABHÄNGIGKEITEN der README-Datei, die in der vollständigen Distribution enthalten ist)

Windows-Benutzer: Eine eigenständige ausführbare Windows-Version von ExifTool ist verfügbar, die Perl nicht benötigt

See also  Best Choice entsperrcode alcatel New

Sie können auch die reine Perl-Version verwenden, wenn Sie Perl bereits installiert haben

(Einen guten, kostenlosen Perl-Interpreter erhalten Sie von activeperl.com.)

Alle anderen (Mac, Unix usw.): Keine Sorge, Sie haben Perl bereits installiert

Die exiftool-Anwendung bietet eine praktische Befehlszeilenschnittstelle für das Image::ExifTool-Perl-Paket (beide in der vollständigen Distribution enthalten)

Nachdem Sie die Distribution heruntergeladen und extrahiert haben, können Sie exiftool sofort ausführen (ohne zu bauen oder zu installieren), indem Sie ” DIR/exiftool FILE ” (oder ” perl DIR/exiftool FILE ” in Windows) eingeben, wobei DIR das exiftool-Verzeichnis und FILE ist der Name einer Bilddatei, einschließlich des Verzeichnisnamens

Lesen Sie die Installationsanweisungen oder die README-Datei, die in der vollständigen Distribution enthalten ist, um Hilfe bei der Installation von ExifTool zu erhalten

Es stehen viele Befehlszeilenoptionen zur Verfügung, mit denen Sie auf eine Vielzahl von Funktionen zugreifen können

Führen Sie exiftool ohne Argumente aus, um eine vollständige Liste der verfügbaren Optionen mit Beispielen zu erhalten

Läuft unter Windows

i) Über die Befehlszeile:

Die Perl-Anwendung (“exiftool”) wird durch Eingabe von “perl exiftool” ausgeführt

Alternativ können Sie es möglicherweise in „exiftool.pl“ umbenennen und „exiftool.pl“ eingeben, aber dazu müssen die richtigen Windows-Zuordnungen für die Erweiterung „.pl“ vorgenommen worden sein

Die eigenständige Version ( „ exiftool(-k).exe“) sollte in „ exiftool.exe “ umbenannt werden, damit es durch Eingabe von „ exiftool “ in der Befehlszeile ausgeführt werden kann

Wenn die ausführbare Exiftool-Datei („ exiftool.pl “ oder „ exiftool

exe”) befindet sich nicht im aktuellen Verzeichnis oder Ihrem System PATH, dann muss sein Verzeichnis auf der Kommandozeile angegeben werden (z

B

durch Eingabe von ” c:\path_to_exiftool\exiftool.pl ” oder ” c:\path_to_exiftool\exiftool “)

.Beachten Sie, dass Sie bei der Eingabe von Befehlen in der Shell „cmd.exe“ doppelte Anführungszeichen anstelle von einfachen Anführungszeichen verwenden sollten, wie in einigen Beispielen gezeigt

ii) Eigenständige Version in der Windows-GUI:

Doppelklicken Sie auf „exiftool(-k).exe“, um die Anwendungsdokumentation zu lesen, oder ziehen Sie Dateien und Ordner per Drag-and-Drop, um exiftool auf den ausgewählten Dateien auszuführen

Einfache Optionen können in Klammern zum Namen des Ständers hinzugefügt werden -allein ausführbar

(Beachten Sie jedoch, dass die Zeichen /\?*:|”<> nicht verwendet werden dürfen, da sie in Windows-Dateinamen ungültig sind.) Auf diese Weise kann das Verhalten der Drag-and-Drop-Anwendung angepasst werden

Zum Beispiel: Name der ausführbaren Datei exiftool(-k).exe Metainformationen im Fenster drucken und vor dem Beenden pausieren.exiftool(-k -a -u -g1 -w txt).exe Ausgabedateien im Format „.txt“ mit detaillierten Metainformationen generieren.exiftool ( -k -o %d%f.xmp).exe Generiert “.xmp”-Sidecar-Dateien exiftool(-copyright=’Phil Harvey’).exe Fügen Sie Copyright-Informationen hinzu (und halten Sie vor dem Beenden nicht an)

kann auch zur „Target”-Eigenschaft einer Windows-Verknüpfung für die ausführbare Datei hinzugefügt werden

Die Verwendung einer Verknüpfung hat drei Vorteile gegenüber dem Hinzufügen von Optionen im Dateinamen: 1) verschiedene Verknüpfungen können erstellt werden, ohne dass mehrere Kopien der ausführbaren Datei erforderlich sind, 2) Zeichen die in Dateinamen ungültig sind, können verwendet werden, und 3) den Verknüpfungen können aussagekräftigere (und bequemere) Dateinamen gegeben werden

Außerdem kann es nützlich sein, re zu erhöhen Stellen Sie die Fenster- und Puffergrößen ein, um weitere Informationen anzuzeigen: Klicken Sie mit der rechten Maustaste auf die Titelleiste des Fensters, wählen Sie dann „Eigenschaften“ aus dem Menü und ändern Sie die Fensterlayouteinstellungen

> exiftool -h -canon t/images/Canon.jpg

Dateiname Canon.jpg Kameramodellname Canon EOS DIGITAL REBEL Datum/Uhrzeit Original 2003:12:04 06:46:52 Aufnahmemodus Bulb Verschlusszeit 4 Blende 14,0 Messmodus Mittenbetonter Durchschnitt Belichtungskorrektur 0 ISO 100 Objektiv 18,0 – 55,0 mm Brennweite 34,0 mm Bildgröße 8×8 Qualität RAW Blitz Kein Blitz Weißabgleich Autofokusmodus Manueller Fokus (3) Kontrast +1 Schärfe +1 Sättigung +1 Farbton Normal Farbraum sRGB Dateigröße 2,6 kB Dateinummer 118-1861 Bildfolgemodus Name des Inhabers von Serienaufnahmen Phil Harvey Seriennummer 0560018150 > exiftool -lang de -h -canon t/images/Canon.jpg

Dateiname Canon.jpg Kameramodell Canon EOS DIGITAL REBEL Erstellungsdatum/-zeit 2003:12:04 06:46:52 Aufnahmemodus Langzeitbelichtung Belichtungszeit 4 Blende 14,0 Messmethode Mittenbetonte Belichtungskorrektur 0 ISO-Empfindlichkeit 100 Objektiv 18,0 – 55,0 mm Brennweite 34,0 mm Bildgröße 8×8 Qualität RAW Blitzmodus Blitz wurde nicht ausgelöst Weißabgleich Autofokusmodus Manueller Fokus (3) Kontrast +1 Schärfe +1 Sättigung +1 Farbton Normal Farbraum sRGB Dateigröße 2,6 kB Dateinummer 118-1861 Aufnahmetyp Burst Besitzer Name Phil Harvey Seriennummer 0560018150

Ausführliche und HtmlDump-Ausgabe

Die Optionen Verbose ( -v ) und HtmlDump ( -htmlDump ) geben zusätzliche Informationen aus, die beim Debuggen oder beim Decodieren neuer Tags sehr nützlich sein können

Ein Tag-Name ist ein “Handle”, das verwendet wird, um auf eine bestimmte Metainformation zu verweisen

Tag-Namen werden in der Befehlszeile mit einem vorangestellten „-“ in der Reihenfolge eingegeben, in der sie angezeigt werden sollen

Fall ist nicht signifikant

Dem Tag-Namen kann ein Gruppenname vorangestellt werden (getrennt durch einen Doppelpunkt), um einen bestimmten Informationstyp oder Ort zu identifizieren

Ein spezieller Tag-Name “Alle” kann verwendet werden, um alle Tags oder alle Tags in einer bestimmten Gruppe darzustellen

Zum Beispiel:

exiftool -Dateiname -Bildgröße -exif:fnumber -xmp:all image.jpg

Eine vollständige Liste der ExifTool-Tag-Namen begleitet diese Dokumentation

Außerdem können aktuelle Listen verfügbarer Tag-Namen und beschreibbarer Tag-Namen mit den exiftool-Optionen -list und -listw abgerufen werden

Aber vielleicht ist der einfachste Weg, einen Tag-Namen zu bestimmen, die Verwendung der Option -s, um die Tag-Namen anstelle von Beschreibungen für alle Informationen in einer Datei auszugeben

Es kann auch hilfreich sein, die Option -G zu verwenden, um die Gruppennamen anzuzeigen, und die Option -H oder -D, um die numerischen Tag-IDs als Referenz zu drucken

Anmerkungen:

Tag-Namen weichen manchmal von ihren Beschreibungen ab

Verwenden Sie die Befehlszeilenoption -s, um die tatsächlichen Tag-Namen anstelle der Beschreibungen anzuzeigen, die beim Extrahieren von Informationen angezeigt werden

Beim Extrahieren von Informationen werden Tags nicht in der Ausgabe angezeigt, es sei denn, sie sind in der Datei vorhanden, selbst wenn sie in der Befehlszeile angegeben werden

Die Option -f kann verwendet werden, um die Anzeige aller angegebenen Tags zu erzwingen (ausgenommen Tags, die mit Platzhaltern oder durch -GROUP:all angegeben wurden)

Informationen für einen bestimmten Tag-Namen können an mehreren Stellen innerhalb einer einzelnen Datei vorkommen

Standardmäßig werden diese doppelten Tags unterdrückt, aber die Option -a kann verwendet werden, um alle Tags zu extrahieren

Tag-Namen können mit einem ‘#’-Zeichen angehängt werden, um die Druckkonvertierung pro Tag zu deaktivieren

Weitere Informationen finden Sie unter der Option -n in der Anwendungsdokumentation

Shortcut-Tags stellen ein oder mehrere andere Tags dar und werden wie alle anderen Tags beim Lesen, Schreiben oder Kopieren von Informationen verwendet

ExifTool definiert einige Shortcut-Tags im Bild: ExifTool::Shortcuts-Modul und ermöglicht es Benutzern, ihre eigenen Verknüpfungen in einer Konfigurationsdatei namens “. ExifTool_config ” in ihrem Home-Verzeichnis oder Exiftool-Anwendungsverzeichnis zu definieren

Hier ist ein einfaches Beispiel, das zwei Verknüpfungen definiert:

%Image::ExifTool::UserDefined::Shortcuts = ( MyShortcut => [‘createdate’,’exposuretime’,’aperture’], MyAlias ​​​​=> ‘FocalLengthIn35mmFormat’, );

In diesem Beispiel ist „MyShortcut“ eine Verknüpfung für die Tags „CreateDate“, „ExposureTime“ und „Aperture“ und „MyAlias“ eine Verknüpfung für „FocalLengthIn35mmFormat“

Die aktuellen Verknüpfungen können mit der Option „-list“ aufgelistet werden.

Die Datei ~/.ExifTool_config kann auch verwendet werden, um neue Tags zu definieren

Weitere Informationen über die Konfigurationsdatei finden Sie in der Beispielkonfigurationsdatei, die in der ExifTool-Distribution enthalten ist

Windows-Tipp: Möglicherweise haben Sie Schwierigkeiten, einen Dateinamen zu generieren, der mit einem ‘ beginnt

‘ in der Windows-GUI, aber es kann mit dem Befehl “rename” an der cmd.exe-Eingabeaufforderung durchgeführt werden

ExifTool klassifiziert Tags in Gruppen in verschiedenen Familien

Hier ist eine Liste der Gruppennamen in jeder Familie:

Familiengruppennamen 0 (Informationstyp) AFCP, AIFF, APE, APP0, APP1, APP11, APP12, APP13, APP14, APP15, APP3, APP4, APP5, APP6, APP8, ASF, Audible, CanonVRD, Composite, DICOM, DNG, DV, DjVu, Ducky, EXE, EXIF, ExifTool, FITS, FLAC, FLIR, Datei, Flash, FlashPix, Schriftart, FotoStation, GIF, GIMP, GeoTiff, GoPro, H264, HTML, ICC_Profile, ID3, IPTC, ISO, ITC, JFIF, JPEG, JSON, JUMBF, Jpeg2000, LNK, Blatt, Lytro, M2TS, MIE, MIFF, MNG, MOI, MPC, MPEG, MPF, MXF, MakerNotes, Matroska, Meta, Ogg, OpenEXR, Opus, PDF, PICT, PLIST, PNG, PSP, Palm, Parrot, PanasonicRaw, PhotoCD, PhotoMechanic, Photoshop, PostScript, PrintIM, QuickTime, RAF, RIFF, RSRC, RTF, Radiance, Rawzor, Real, Red, SVG, SigmaRaw, Stim, Theora, Torrent, Trailer, UserParam, VCard, Vorbis, WTV, XML, XMP, ZIP 1 (bestimmter Speicherort) AC3, AFCP, AIFF, APE, ASF, AVI1, Adobe, AdobeCM, AdobeDNG, Apple, Audible, CBOR, CIFF, CameraIFD, Canon, CanonCustom, CanonRaw, CanonVRD, Casio, Kapitel#, Composite, DICOM, DJI, DNG, DV, DjVu, DjVu-Meta, Ducky, EPPIM, EXE, EXIF, ExifIFD, ExifTool, FITS, FLAC, FLIR, Datei, Flash, FlashPix, Schriftart, FotoStation, FujiFilm, FujiIFD, GE, GIF, GIMP, GPS, GeoTiff, GlobParamIFD, GoPro, GraphConv, H264, HP, HTC, HTML, HTML-dc, HTML-ncc, HTML-office, HTML-prod, HTML-vw96, HTTP-equiv, ICC-chrm, ICC-clrt, ICC-header, ICC-meas, ICC-meta, ICC- view, ICC_Profile, ICC_Profile#, ID3, ID3v1, ID3v1_Enh, ID3v2_2, ID3v2_3, ID3v2_4, IFD0, IFD1, IPTC, IPTC#, ISO, ITC, Insta360, InteropIFD, ItemList, JFIF, JFXX, JPEG, JPEG-HDR, JPS, JSON, JUMBF, JVC, Jpeg2000, KDC_IFD, Keys, Kodak, KodakBordersIFD, KodakEffectsIFD, KodakIFD, KyoceraRaw, LNK, Leaf, LeafSubIFD, Leica, Lyrics3, Lytro, M2TS, MAC, MIE Audio, MIE Camera, MIE Canon, MIE-Doc , MIE-Extender, MIE-Flash, MIE-GPS, MIE-Geo, MIE-Image, MIE-Lens, MIE-Main, MIE-MakerNotes, MIE-Meta, MIE-Orient, MIE-Preview, MIE-Thumbnail, MIE -UTM, MIE-Unknown, MIE-Video, MIFF, MNG, MOBI, MOI, MPC, MPEG, MPF0, MPImage, MS-DOC, MXF, MacOS, MakerNotes, MakerUnknown, Matroska, MediaJukebox , Meta, MetaIFD, Microsoft, Minolta, MinoltaRaw, Motorola, NITF, Nikon, NikonCapture, NikonCustom, NikonScan, NikonSettings, NineEdits, Nintendo, Ocad, Ogg, Olympus, OpenEXR, Opus, PDF, PICT, PNG, PNG-pHYs, PSP , Palm, Panasonic, PanasonicRaw, Pentax, PhaseOne, PhotoCD, PhotoMechanic, Photoshop, PictureInfo, PostScript, PreviewIFD, PrintIM, ProfileIFD, Qualcomm, QuickTime, RAF, RAF2, RIFF, RMETA, RSRC, RTF, Radiance, Rawzor, Real, Real CONT, Real-MDPR, Real-PROP, Real-RA3, Real-RA4, Real-RA5, Real-RJMD, Reconyx, Rot, Ricoh, SPIFF, SR2, SR2DataIFD, SR2SubIFD, SRF#, SVG, Samsung, Sanyo, Scalado , Sigma, SigmaRaw, Sony, SonyIDC, Stim, SubIFD, System, Theora, Torrent, Track#, UserData, UserParam, VCalendar, VCard, Version0, Vorbis, WTV, XML, XMP, XMP-DICOM, XMP-Device, XMP- GAudio, XMP-GDepth, XMP-GFocus, XMP-GImage, XMP-GPano, XMP-GSpherical, XMP-LImage, XMP-MP, XMP-MP1, XMP-PixelLive, XMP-aas, XMP-acdsee, XMP-album, XMP-apple-fi, XMP-aux, XMP-cc, XMP-cell, XMP-creatorAtom, XMP-crs, XMP-dc , XM P-dex, XMP-digiKam, XMP-drone-dji, XMP-dwc, XMP-exif, XMP-exifEX, XMP-expressionmedia, XMP-extensis, XMP-fpv, XMP-getty, XMP-ics, XMP- iptcCore, XMP-iptcExt, XMP-lr, XMP-mediapro, XMP-microsoft, XMP-mwg-coll, XMP-mwg-kw, XMP-mwg-rs, XMP-pdf, XMP-pdfx, XMP-photomech, XMP- Photoshop, XMP-plus, XMP-pmi, XMP-prism, XMP-prl, XMP-prm, XMP-pur, XMP-rdf, XMP-swf, XMP-tiff, XMP-x, XMP-xmp, XMP-xmpBJ, XMP-xmpDM, XMP-xmpMM, XMP-xmpNote, XMP-xmpPLUS, XMP-xmpRights, XMP-xmpTPg, ZIP, iTunes 2 (Kategorie) Audio, Autor, Kamera, Gerät, Dokument, ExifTool, Bild, Ort, Andere, Vorschau , Printing , Time, Unknown, Video 3 (Dokumentennummer) Doc#, Main 4 (Instanznummer) Copy# 5 (Metadatenpfad) [experimentell] zB

JPEG-APP1-IFD0-ExifIFD 6 (EXIF/TIFF-Format) int8u, string, int16u, int32u, rational64u, int8s, undef, int16s, int32s, rational64s, float, double, ifd, unicode, complex, int64u, int64s, ifd64 7 (Tag-ID) ID-xxx (wobei xxx die Tag-ID ist

Numerische IDs werden in Hex mit einem führenden „0x“ angegeben, wenn die HexTagIDs-API-Option gesetzt ist, ebenso wie Zeichen in nicht-numerischen IDs, die in einer Gruppe nicht gültig sind Beachten Sie, dass im Gegensatz zu anderen Gruppennamen bei Gruppennamen der Familie 7 zwischen Groß- und Kleinschreibung unterschieden wird.)

Die Exiftool-Ausgabe kann basierend auf diesen Gruppen organisiert werden, indem die Option -g oder -G verwendet wird (d

h

-g1, um die Gruppen der Familie 1 anzuzeigen, oder -g3:1, um sowohl die Gruppennamen der Familie 3 als auch der Familie 1 in der Ausgabe anzuzeigen

Siehe die -g-Option in der Exiftool-Anwendungsdokumentation für weitere Details und die GetGroup-Funktion in der ExifTool-Bibliothek für eine Beschreibung der Gruppenfamilien

Beachten Sie, dass beim Schreiben nur die Gruppennamen der Familien 0, 1, 2 und 7 verwendet werden dürfen Beim Schreiben von Informationen behält ExifTool die Originaldatei bei, indem es „_original ” zum Dateinamen hinzufügt

Bewahren Sie unbedingt eine Kopie des Originals auf oder überprüfen Sie die neue Datei gründlich, bevor Sie das Original löschen

(Lesen Sie hier einige Abschweifungen zum Thema Schreiben Metainformationen.)

Syntax

Tag-Werte werden geschrieben und nicht extrahiert, wenn ein Tag-Name mit einem „=“-Symbol endet (oder wenn die Optionen -tagsFromFile oder -geotag verwendet werden)

Dem „=“ kann ein Präfix vorangestellt werden ‘ + ‘, ‘ – ‘ oder ‘ < ' um einen Wert hinzuzufügen, einen Wert zu entfernen oder einen Wert aus der Datei zu setzen e skizziert den Unterschied erent Schreibsyntaxen:

Syntax Ergebnis -TAG= Löscht alle Vorkommen von TAG -all= Löscht alle Metainformationen! † -GROUP:TAG= Löscht TAG nur in der angegebenen Gruppe

-GROUP:all= Löscht alle Informationen in der angegebenen Gruppe

-[GROUP:]TAG=VALUE Setzt den Wert des TAG (nur in GROUP, falls angegeben)

-[GROUP:]TAG+=VALUE Fügt ein Element zu einer Liste hinzu, verschiebt ein Datum/eine Uhrzeit oder erhöht eine Zahl -[GROUP:]TAG-=VALUE Entfernt ein Element aus einer Liste, verschiebt ein Datum/eine Uhrzeit oder löscht TAG, wenn es den angegebenen Wert hat -[GROUP:] ]TAG<=FILE Legt den Tag-Wert aus dem Inhalt der angegebenen Datei fest

† Siehe Writer-Einschränkungen für einige Einschränkungen dieser Funktion

Um VALUE müssen Anführungszeichen gesetzt werden, wenn es Leerzeichen oder andere Sonderzeichen enthält, und um das gesamte Argument, wenn das ‘ <= '-Syntax verwendet (um eine Shell-Umleitung zu verhindern)

Eine spezielle Funktion ermöglicht es, die Druckumwandlung pro Tag zu deaktivieren, indem jedem Tag-Namen (einschließlich ‘ all ‘) das Zeichen ‘ # ‘ angehängt wird

Dies hat denselben Effekt wie die Option -n, jedoch für ein einzelnes Tag

Weitere Einzelheiten finden Sie unter der Option -n in der Anwendungsdokumentation

Hinweis: Änderungen an PDF-Dateien sind rückgängig zu machen, da die ursprünglichen Metadaten nie wirklich aus diesen Dateien gelöscht werden

Einzelheiten finden Sie in der PDF-Tags-Dokumentation

Gruppenprioritäten

ExifTool priorisiert beim Schreiben die folgenden Arten von Metainformationen:

1) EXIF, 2) IPTC, 3) XMP

Viele Tag-Namen sind für mehr als eine dieser Gruppen gültig

Wenn beim Schreiben von Informationen kein Gruppenname angegeben wird, werden die Informationen nur der Gruppe mit der höchsten Priorität hinzugefügt, für die der Tag-Name gültig ist (die Informationen werden jedoch in allen Gruppen aktualisiert, in denen der Tag bereits vorhanden war)

Die Priorität der Gruppen ergibt sich aus der obigen Liste

Konkret bedeutet dies, dass neue Informationen bevorzugt in die EXIF-Gruppe aufgenommen werden, oder in die IPTC-Gruppe, wenn kein entsprechendes EXIF-Tag existiert, oder schließlich in die XMP-Gruppe

Alternativ können Informationen unter Umgehung dieser Prioritäten nur in eine bestimmte Gruppe geschrieben werden, indem ein Gruppenname für das Tag bereitgestellt wird

Der obige Abschnitt „Schreiben von Metainformationen“ gab die Syntaxregeln für Exiftool-Befehlszeilenargumente, um dies zu tun

Jeder Gruppenname der Familie 0, 1, 2 oder 7 kann beim Schreiben von Informationen verwendet werden, obwohl nicht alle Gruppen beschreibbar sind

Die Option “-tagsFromFile”

Eine spezielle ExifTool-Option ermöglicht das Kopieren von Tags von einer Datei in eine andere

Die Befehlszeilensyntax dafür lautet ” -tagsFromFile SRCFILE “

Alle nach dieser Option in der Befehlszeile angegebenen Tags werden aus der Quelldatei extrahiert und in die Zieldatei geschrieben

Wenn keine Tags angegeben sind, werden alle beschreibbaren Tags kopiert

Diese Option ist sehr einfach, aber sehr leistungsfähig

Je nach Format der Quell- und Zieldatei sind einige der gelesenen Tags in der Zieldatei möglicherweise nicht gültig, in diesem Fall werden sie nicht geschrieben.

Diese Option kann auch verwendet werden, um Informationen zwischen verschiedenen Tags innerhalb eines einzelnen Bildes oder zwischen verschiedenen Bildern zu übertragen

Weitere Einzelheiten finden Sie unter der Option -tagsFromFile in der Anwendungsdokumentation.

ExifTool schreibt eine Datei nicht neu, wenn es ein erhebliches Problem mit dem Dateiformat feststellt.

mit dem Dateiformat

ExifTool wurde mit einer Vielzahl verschiedener Bilder getestet, aber da es nicht möglich ist, es mit jedem bekannten Bildtyp zu testen, besteht die Möglichkeit, dass es einige Dateien beschädigt

Stellen Sie sicher, dass Sie Sicherungskopien Ihrer Dateien aufbewahren

Stellen Sie sicher, dass Sie Sicherungskopien Ihrer Dateien aufbewahren

Auch wenn ExifTool eine gewisse Validierung der geschriebenen Informationen vornimmt, ist es dennoch möglich, illegale Werte zu schreiben, die beim Lesen der Bilder mit anderer Software zu Problemen führen können

Achten Sie also darauf, die von Ihnen geschriebenen Informationen zu validieren

Dies kann zu Problemen beim Lesen der Bilder mit anderer Software führen

Achten Sie also darauf, die Informationen, die Sie schreiben, zu validieren

ExifTool garantiert nicht, Metadaten vollständig aus einer Datei zu entfernen, wenn versucht wird, alle Metadaten zu löschen

Bei JPEG-Bildern werden alle APP-Segmente (außer Adobe APP14, das standardmäßig nicht entfernt wird) und Trailer entfernt, wodurch effektiv alle Metadaten entfernt werden, aber bei anderen Formaten sind die Ergebnisse weniger vollständig: JPEG – APP-Segmente (außer Adobe APP14) und Trailer werden entfernt

TIFF – XMP, IPTC, ICC_Profile und das ExifIFD werden entfernt, aber einige EXIF-Dateien können in IFD0 verbleiben

(Das CommonIFD0-Shortcut-Tag wird bereitgestellt, um das Entfernen allgemeiner Metadaten-Tags aus IFD0 zu vereinfachen.) PNG – Nur XMP-, EXIF-, ICC_Profile- und native PNG-Textdatenblöcke werden entfernt

PDF – Die ursprünglichen Metadaten werden nie wirklich entfernt

PS – Nur XMP und einige native PostScript-Tags können gelöscht werden

MOV/MP4 – Die meisten Metadaten der obersten Ebene werden entfernt

RAW-Formate – Es wird nicht empfohlen, alle Metadaten aus RAW-Bildern zu entfernen, da dies wahrscheinlich einige proprietäre Informationen entfernt, die für das ordnungsgemäße Rendern des Bildes erforderlich sind.

aus einer Datei, wenn Sie versuchen, alle Metadaten zu löschen

Bei JPEG-Bildern werden alle APP-Segmente (außer Adobe APP14, das standardmäßig nicht entfernt wird) und Trailer entfernt, wodurch effektiv alle Metadaten entfernt werden, aber bei anderen Formaten sind die Ergebnisse weniger vollständig:

[18.02.2020] Die Hasselblad Phocus-Software aktualisiert die kleinen Vorschau- oder Miniaturbilder von FFF-Dateien, die mit ExifTool bearbeitet wurden, nicht mehr

Dies liegt möglicherweise an einigen nicht referenzierten Vorschauinformationen in der Datei, die verloren gehen, wenn sie mit ExifTool bearbeitet werden, aber dies scheint keine anderen Auswirkungen zu haben

[ExifTool 11.88 und höher geben einen kleinen Fehler aus, wenn sie versuchen, FFF-Dateien zu schreiben, aber dieses Problem scheint in Phocus v3.5.4 behoben worden zu sein]

Die Software aktualisiert die kleinen Vorschau- oder Miniaturbilder von mit ExifTool bearbeiteten Bildern nicht mehr

Dies liegt möglicherweise an einigen nicht referenzierten Vorschauinformationen in der Datei, die verloren gehen, wenn sie mit ExifTool bearbeitet werden, aber dies scheint keine anderen Auswirkungen zu haben

[2019-05-29] Canon Digital Photo Professional 4 (DPP4) zerstört ein CR3-Bild beim Bearbeiten, wenn es zuvor mit DPP4 und anschließend mit ExifTool bearbeitet wurde

[ExifTool 11.45 behebt dies, indem das CR3 so strukturiert wird, dass es für die Bearbeitung mit DPP4 sicher ist, und kann verwendet werden, um Dateien umzustrukturieren, die von älteren ExifTool-Versionen geschrieben wurden.]

(DPP4) zerstört ein Bild beim Bearbeiten, wenn es zuvor mit DPP4 und anschließend mit ExifTool bearbeitet wurde

[2018-09-27] Die Sony Imaging Edge-Anwendungen geben einen Fehler aus, wenn sie versuchen, mit ExifTool bearbeitete ARW- oder ARQ-Bilder zu öffnen, obwohl andere RAW-Bilddienstprogramme wie Sony IDC (Sonys älterer RAW-Bildkonverter), Adobe Photoshop, Lightroom und DNG Converter , Apple Preview, dcraw, Capture One, Affinity Photo und SonyPixelShift2DNG von LibRaw haben damit keine Probleme.

See also  Best selbständige handwerker aus polen New

Die geben einen Fehler, wenn Sie versuchen, mit ExifTool bearbeitete oder bearbeitete Bilder zu öffnen, obwohl andere RAW-Bilddienstprogramme, einschließlich Sony IDC (Sonys älterer RAW-Bildkonverter), Adobe Photoshop, Lightroom und DNG Converter, Apple Preview, dcraw, Capture One, Affinity Photo und SonyPixelShift2DNG von LibRaw hat damit keine Probleme

[03.08.2016] Es ist bekannt, dass einige Antivirus-Software Probleme mit der Windows-Version von ExifTool verursacht

Norton Antivirus kann ExifTool löschen, wenn es ausgeführt wird, Windows Defender kann den Start von ExifTool verlangsamen oder es ganz aufhängen, und Bitdefender Antivirus kann ExifTool daran hindern, Dateien zu schreiben

Vermutlich liegt dies an der Funktionsweise des ExifTool-Pakets für Windows – es entpackt ausführbare Dateien in ein temporäres Verzeichnis und läuft von dort aus, was anscheinend von Antivirensoftware als Bedrohung angesehen werden kann

Eine Problemumgehung besteht darin, ExifTool zur ausgeschlossenen Liste der Antivirensoftware hinzuzufügen

Es ist bekannt, dass einige Antivirensoftware Probleme mit der Version von ExifTool verursachen

kann ExifTool löschen, wenn es ausgeführt wird, kann den Start von ExifTool verlangsamen oder es ganz aufhängen und kann ExifTool daran hindern, Dateien zu schreiben

Vermutlich liegt dies an der Funktionsweise des ExifTool-Pakets für Windows – es entpackt ausführbare Dateien in ein temporäres Verzeichnis und läuft von dort aus, was anscheinend von Antivirensoftware als Bedrohung angesehen werden kann

Eine Problemumgehung besteht darin, ExifTool zur ausgeschlossenen Liste der Antivirensoftware hinzuzufügen

[27.05.2016] Adobe Camera Raw und DNG Converter 9.5.1 erkennen bearbeitete Samsung SRW-Bilder von einigen Modellen (NX30, NX300, NX2000 und EK-GN120) nicht

[Dieses Problem wurde für die NX-Modelle in ExifTool 10.26 behoben, und das Schreiben von EK-GN120-Dateien wurde in ExifTool 10.95 deaktiviert]

kann bearbeitete Bilder von einigen Modellen (NX30, NX300, NX2000 und EK-GN120) nicht erkennen

Unter Windows verarbeitet ExifTool keine Dateien mit Unicode-Zeichen im Dateinamen

Dies ist auf einen zugrunde liegenden Mangel an Unterstützung für Unicode-Dateinamen in den Windows-Standard-C-I/O-Bibliotheken zurückzuführen

[Dieser Mangel wurde in ExifTool 9.79 behoben, und ExifTool unterstützt jetzt Windows Unicode-Dateinamen mit einigen Ausnahmen

Einzelheiten finden Sie im Abschnitt WINDOWS-UNICODE-DATEINAMEN der Anwendungsdokumentation.]

, ExifTool verarbeitet keine Dateien mit

Dies ist auf einen zugrunde liegenden Mangel an Unterstützung für Unicode-Dateinamen in den Windows-Standard-C-I/O-Bibliotheken zurückzuführen

[08.11.2013] Apple Spotlight and Preview (OS X 10.8.5) und Adobe Photoshop CC (Version 14.0) ignorieren XMP in PNG-Bildern, wenn es nach den Bilddaten kommt, wo ExifTool neues XMP hinzufügt

Dies sollte als Fehler in der Apple- und Adobe-Software angesehen werden, da XMP gemäß den XMP- und PNG-Spezifikationen nach den Bilddaten existieren darf

[ExifTool 9.40 bietet die API-Option PNGEarlyXMP, um das Schreiben von XMP vor dem IDAT-Chunk zu ermöglichen, aber es gibt Einschränkungen bei der Verwendung

ExifTool 11.58 und höher entfernt diese Option und schreibt immer XMP vor IDAT und 11.63 und höher schreibt alle Textabschnitte vor IDAT.]

Spotlight and Preview (OS X 10.8.5) und Photoshop CC (Version 14.0), wenn es nach den Bilddaten kommt, wo ExifTool neues XMP hinzufügt

Dies sollte als Fehler in der Apple- und Adobe-Software angesehen werden, da XMP gemäß den XMP- und PNG-Spezifikationen nach den Bilddaten existieren darf

[21.04.2013] ExifTool verfügbarer Speicher in der Windows EXE-Version ist auf wenige hundert MB begrenzt

Es ist bekannt, dass diese Einschränkung unangemessen lange Verarbeitungszeiten (fast 7 Minuten) für einige große EPS-Dateien (> 200 MB) verursacht, die von der Perl-Version viel schneller verarbeitet werden (< 6 Sekunden).

Der für ExifTool im verfügbare Speicher ist auf einige hundert MB begrenzt

Es ist bekannt, dass diese Einschränkung (fast 7 Minuten) für einige große EPS-Dateien (> 200 MB) verursacht, die von der Perl-Version viel schneller verarbeitet werden (< 6 Sekunden)

[12.01.2010] In einigen Adobe-Dienstprogrammen gibt es einen Fehler, der dazu führt, dass einige bearbeitete Sony-ARW-Bilder mit der falschen Tonwertkurve angezeigt werden

Dieses Problem wurde in Photoshop CS4 Camera Raw 5.6, DNG Converter 5.6 und Lightroom 2.6 mit ARW-Bildern von A500, A550, A700, A850 und A900 beobachtet

Andere Software wie das Sony IDC-Dienstprogramm, Apple RAW-Dienstprogramme, dcraw und Capture One haben keine Probleme mit bearbeiteten Bildern

[Dieser Fehler wurde in Camera Raw 6.3 und LR 3.3 behoben]

Es gibt einen Fehler in einer Reihe von Dienstprogrammen, der dazu führt, dass einige bearbeitete Bilder mit der falschen Tonwertkurve angezeigt werden

Dieses Problem wurde in Photoshop CS4 Camera Raw 5.6, DNG Converter 5.6 und Lightroom 2.6 mit ARW-Bildern von A500, A550, A700, A850 und A900 beobachtet

Andere Software wie das Sony IDC-Dienstprogramm, Apple RAW-Dienstprogramme, dcraw und Capture One haben keine Probleme mit bearbeiteten Bildern

[06.07.2007] Es gibt einen Fehler in der Apple RAW-Dateiunterstützung (OS X 10.4.11), der verhindert, dass einige bearbeitete Pentax PEF-Bilder richtig angezeigt werden

Andere Software wie die Pentax Silkypix-Software und dcraw haben keine Probleme mit diesen Bildern

[Dieser Fehler wurde in OS X 10.5.4 behoben]

Einige ExifTool-Optionen ( -config , -if , -p , -api filter , -api filterw und Kopierargumente wie “-DSTTAG

Dies kann ein Sicherheitsproblem darstellen, wenn ExifTool von einer anderen Anwendung ausgeführt wird, die blind nicht vertrauenswürdige Dateinamen auf der Befehlszeile übergibt (da sie als ExifTool-Optionen interpretiert werden können, wenn sie mit einem Bindestrich beginnen)

Aus Sicherheitsgründen muss die aufrufende Anwendung entweder Dateinamen nach der Option „–“ platzieren oder sicherstellen, dass Eingabedateinamen nicht mit einem Bindestrich (U+002D) oder einem Unicode-Minuszeichen (U+2212) beginnen

Eine Möglichkeit, dies zu erreichen, besteht darin, Eingabedateinamen einen bekannten Verzeichnisnamen voranzustellen, z

B.) “./FILENAME”.

Außerdem sollten nicht vertrauenswürdige Fenstertitel-Strings nicht mit der Option -progress:TITLE verwendet werden Sie haben vergessen, das Datum/die Uhrzeit auf Ihrer Digitalkamera einzustellen, bevor Sie ein paar Bilder gemacht haben? ExifTool verfügt über eine Zeitverschiebungsfunktion, die es einfach macht, eine Stapelkorrektur auf die Zeitstempel der Bilder anzuwenden (z

B

das vom Windows Explorer gemeldete “Bildaufnahmedatum” zu ändern)

Angenommen, die Uhr Ihrer Kamera wurde auf 2000:01:01 00:00:00 zurückgesetzt, als Sie um 2005:11:03 10:48:00 eine neue Batterie einlegten

Dann haben alle Bilder, die Sie anschließend gemacht haben, Zeitstempel, die um 5 Jahre, 10 Monate, 2 Tage, 10 Stunden und 48 Minuten falsch sind

Um dies zu beheben, legen Sie alle Bilder in dasselbe Verzeichnis (” DIR “) und führen Sie exiftool: aus

exiftool “-DateTimeOriginal+=5:10:2 10:48:0” DIR

Das obige Beispiel ändert nur das DateTimeOriginal-Tag, aber jedes beschreibbare Datums- oder Zeit-Tag kann verschoben werden, und mehrere Tags können mit einer einzigen Befehlszeile geschrieben werden

Üblicherweise müssen in JPEG-Bildern die Werte DateTimeOriginal, CreateDate und ModifyDate alle geändert werden

Der Einfachheit halber wurde ein Shortcut-Tag namens AllDates definiert, um diese drei Tags darzustellen

Wenn Sie also zum Beispiel vergessen haben, die Uhr Ihrer Kamera am Ende der Sommerzeit im Herbst um 1 Stunde zurückzustellen, können Sie die Bilder korrigieren mit:

exiftool -AllDates-=1 DIR

Siehe Image::ExifTool::Shift.pl (Download im PDF-Format) für Details über die Syntax der Zeitverschiebungszeichenfolge

Hinweis: Nicht alle Datums-/Zeitinformationen werden von der AllDates-Verknüpfung abgedeckt

Insbesondere sind die Datums-/Uhrzeit-Tags des Dateisystems nicht enthalten, und dieser Befehl setzt FileModifyDate auf das aktuelle Datum/die aktuelle Uhrzeit zurück, wie es sollte, wenn die Datei geändert wird, es sei denn, entweder die Option -P wird verwendet oder FileModifyDate ist auf etwas anderes eingestellt

Um FileModifyDate zusammen mit den anderen Tags zu verschieben, fügen Sie -FileModifyDate-=1 zum obigen Befehl hinzu.

Durch Schreiben eines neuen Werts in die FileName- und/oder Directory-Tags können Dateien umbenannt und/oder in andere Verzeichnisse verschoben werden

Dies kann in Kombination mit der Option -d (Datumsformat) ein sehr leistungsfähiges Werkzeug sein, um Bilder nach Datum/Uhrzeit zu organisieren

Beispielsweise benennt der folgende Befehl alle Bilder im Verzeichnis „DIR“ entsprechend dem Erstellungsdatum der einzelnen Datei in der Form „YYYYmmdd_HHMMSS.ext“ um.

exiftool „-FileName

Alternativ kann ein neues Verzeichnis angegeben werden, indem der Wert des Directory-Tags festgelegt wird

Beispielsweise verschiebt der folgende Befehl alle Bilder, die sich ursprünglich im Verzeichnis ” DIR ” befanden, in eine Verzeichnishierarchie, die nach Jahr/Monat/Tag organisiert ist:

exiftool “-Directory

Lesen Sie hier für weitere Details über diese leistungsstarke Funktion.

Das Laden von ExifTool ist mit einem erheblichen Overhead verbunden, daher kann die Leistung erheblich verbessert werden, indem Sie die Stapelverarbeitungsfunktionen von ExifTool nutzen (die Fähigkeit, mehrere Dateien oder ganze Verzeichnisse mit einem einzigen Befehl zu verarbeiten)

Reduzieren Sie die Anzahl der ausgeführten Befehle, wenn Sie komplexe Operationen ausführen oder mehrere Dateien verarbeiten

Die Ausführungsoption kann verwendet werden, um mehrere unabhängige Operationen mit einem einzigen Aufruf von exiftool auszuführen, und bietet zusammen mit der -stay_open-Option eine Methode zum Aufrufen von Anwendungen, um diesen Startaufwand zu vermeiden

Es wurde auch beobachtet, dass die Ladezeit von ExifTool für Windows steigt deutlich an, wenn Windows Defender aktiv ist

Das Deaktivieren von Windows Defender kann die Dinge erheblich beschleunigen

Die Verarbeitungsgeschwindigkeit von ExifTool kann beim Extrahieren von Informationen verbessert werden, indem der Arbeitsaufwand reduziert wird

Verringern Sie die Anzahl der extrahierten Tags, indem Sie sie einzeln ( -TAG ) oder nach Gruppe ( -GROUP:all ) angeben, und deaktivieren Sie die zusammengesetzten Tags ( -e ) und die Druckkonvertierungen ( -n ), wenn diese Funktionen nicht erforderlich sind

Beachten Sie, dass die Ausschlussoptionen ( -x oder –TAG ) nicht sehr effizient sind und sich negativ auf die Leistung auswirken können, wenn eine große Anzahl von Tags einzeln ausgeschlossen wird

Die Ausnahme bilden XMP-Gruppen, die bei der Verarbeitung umgangen werden, sodass sie nicht einmal extrahiert werden – die Angabe von –XMP-crs:all und -XMP-crd:all kann die Verarbeitung erheblich beschleunigen, indem die Verarbeitung umfangreicher Adobe-Bildbearbeitungsinformationen vermieden wird

Die Option -fast kann die Geschwindigkeit erheblich erhöhen, wenn Informationen aus JPEG-Bildern extrahiert werden, die über eine langsame Netzwerkverbindung geleitet werden

Bei dieser Option werden jedoch keine Informationen in einem JPEG-Trailer extrahiert

Für größere Geschwindigkeitsvorteile kann -fast2 verwendet werden, um auch das Extrahieren von MakerNote-Informationen zu vermeiden, wenn dies nicht erforderlich ist, oder -fast4, wenn nur Pseudo-System-Tags erforderlich sind

Vermeiden Sie beim Schreiben das Kopieren von Tags (mit -tagsFromFile ) oder die Verwendung von – if oder -fileOrder Option, da diese den zusätzlichen Schritt des Extrahierens von Tags aus der Datei hinzufügen

Ohne diese wird der Schreibvorgang mit einem einzigen Durchlauf jeder Datei durchgeführt

† Beachten Sie jedoch, dass bei Verwendung der Option -csv Informationen aus allen Dateien im Speicher gepuffert werden, bevor die CSV-Ausgabe geschrieben wird

Dies kann sehr speicherintensiv sein und zu einer schlechten Leistung führen, wenn eine große Anzahl von Dateien in einem einzigen Befehl gelesen wird Verteilung

Das Image::ExifTool-Modul kann in jedem Perl-Skript verwendet werden, um einen einfachen Zugriff auf Metainformationen bereitzustellen

Hier ist ein Beispiel für ein sehr einfaches Skript, das Image::ExifTool verwendet, um alle erkannten Metainformationen in einer Datei auszugeben:

#!/usr/bin/perl -w use Image::ExifTool ‘:Public’; my $file = shift or die “Bitte Dateinamen angeben”; meine $info = ImageInfo($file); foreach (Tasten %$info) { print “$_ : $info->{$_}

“; }

Beachten Sie, dass einige Tag-Werte möglicherweise als SCALAR-Referenzen zurückgegeben werden, die Binärdaten angeben

Das obige einfache Skript behandelt diesen Fall nicht

Weitere Einzelheiten finden Sie in der Image::ExifTool-Dokumentation.

Von Benutzern beigesteuerte Dokumentation

Nachfolgend finden Sie einige kostenlose Dienstprogramme, die die Vorteile der ExifTool-Engine nutzen:

Windows

Mac OS

Laden Sie ein eigenständiges PPC-Droplet herunter, um Vorschaubilder aus RAW-Dateien zu extrahieren (danke an Brett Gross)

Laden Sie drei Droplets herunter, um Informationen zu extrahieren [exiftool muss installiert sein] (danke an Rob Lewis)

MacMetaMod: Droplet zum Hinzufügen von Schlüsselwörtern zu Bildern

GPSPhotoLinker: Geotagging auf dem Mac

PhotoGPSEditor und PhotoInfoEditor: Dienstprogramme zur Geokodierung

MetaDataMover (Quelle): GUI-basiertes Automator-Dienstprogramm zum Verschieben/Umbenennen von Bildern

CS1ToCR2: Dienstprogramm, das GPS-CS1-Protokolldateien von Sony verwendet, um GPS-Informationen zu CR2-Bildern hinzuzufügen

Geotagger: Droplet zum Einfügen von GPS-Koordinaten in Ihre Fotos

Raw Photo Processor: Raw-Konverter für MacOS

GraphicConverter: Vollwertiger Bildeditor [bemerkenswert, aber nicht kostenlos]

GeoTag: Geotagging-Anwendung für iPhone und MacOS

ImageFuser: Verschmelzt mehrere Belichtungen einer Szene zu einem Bild mit verbesserter Detailtreue/Belichtung

GeoNamesTagger: Docklet zum einfachen Aktualisieren von Bildmetadaten mit standortspezifischen Informationen

SetEXIFData: Hinzufügen/Ändern von EXIF-Daten in Bildern

GeoTagster: Geotagging aus GPX-Dateien (kostenpflichtige App für 0,99 $)

Exif Photoworker: Benennen Sie Ihre Fotos und Videos mit wenigen Klicks intelligent um und organisieren Sie sie

MetaImage: Liest, schreibt und bearbeitet Ihre Bildmetadaten in einer vertrauten Oberfläche

Linux

rawimage: Ein kfile-Plugin und Thumbnail-Image-Handler für RAW-Formate

Hugin: Stitcher für Panoramafotos

FotoPreProcessor: PyQt4-basiertes Frontend für exiftool zur grafischen Bearbeitung von Metadaten

ExZenToo: Skript für die grundlegende ExifTool-GUI mit Zenity

PDFMted: Eine Reihe von Bash-Skripten zum einfachen Anzeigen und Bearbeiten von PDF-Metadaten

exiftool-zsh-completion: zsh-Vervollständigung für exiftool

Image MetaWriter: Stapelverarbeitendes Linux-Befehlszeilenprogramm zum Hinzufügen von Metadaten zu Bildern

Android

ExifTool für Android: Anzeigen, Bearbeiten oder Löschen von Metadaten in Foto-, Video- und anderen Dateien

EXIF Pro – ExifTool für Android: Anzeigen, Bearbeiten oder Löschen der Metadaten von Dateien auf Android

Multi-Plattform

ImageIngester: Workflow-Automator für Windows- und MacOS-Bilder

gpsPhoto: Geotaggen Sie Ihre Bilder aus einem GPS (GPX) Track Log

renrot: Perl-Dienstprogramm zum Durchführen verschiedener Verarbeitungsaufgaben an Bildern

GPicSync: Windows/Linux-Dienstprogramm zum Geokodieren von Fotos aus einer GPX-Trackaufzeichnung und zum Erstellen von KML-Dateien

FlickFleck: Tool zum Übertragen von Bildern von der Speicherkarte, Drehen, Umbenennen und Organisieren nach Datum

Geotag: Open-Source-Java-basierte Geotagging-Anwendung

PhotoGrok: Java-basiertes GUI-Frontend für ExifTool zum Anzeigen von Bildern, die nach einem beliebigen EXIF-Tag organisiert sind

XnView: Anzeigen und Konvertieren von Grafikdateien

Mapivi: Open-Source- und plattformübergreifender Bildmanager

ResourceSpace: Open-Source-Digital-Asset-Management-System

fix_corrupted_nef: Dienstprogramm zum Reparieren von Nikon D4/D600/D800/D800E NEF-Bildern, die durch Nikon Transfer 1 beschädigt wurden

pyExifToolGUI: Python-basiertes grafisches Frontend für ExifTool

jExifToolGUI: Java-basiertes grafisches Frontend für ExifTool

MDQC: AVPreserve-Tool für die Qualitätskontrolle von Metadaten über eine große Anzahl digitaler Assets hinweg

FastPhotoTagger: Hinzufügen von Metadaten zu Bildern (erfordert Java-Laufzeit-Engine)

Digi-libris: Metadatenzentrierte Software für die automatische Organisation Ihres eigenen Katalogs

FreezeFrame: Foto-/Videobibliotheksmanager (erfordert Java 8)

Online

Jeffrey’s Exif Viewer: Web-Dienstprogramm zum Anzeigen von Metainformationen in Online-Bildern

Der eXif.er: Webbasierter EXIF-Editor

Get-IPTC-Photo-Metadata: Webdienst, der alle IPTC-Metadaten von Web- und lokalen Bildern anzeigt (Quellcode)

Lightroom-Plugins

Jeffrey’s Geoencoding Plugin for Lightroom: Geokodieren Sie Ihre Fotos aus Lightroom heraus

Metadata Wrangler: Entfernt ausgewählte Metadatenkomponenten aus Bildern, während sie exportiert werden

ExifMeta: Stellen Sie alle Exif-Metadaten in Lightroom für Lib-Filterung und intelligente Sammlungen zur Verfügung

FullMetaExport: Exportieren Sie JPEG-Bilder aus Lightroom mit vollständigen Metadaten

LensTagger: Fügen Sie EXIF-Informationen wie Blende und Brennweite für manuelle Objektive hinzu

DeAspect: Entfernen Sie Informationen zum Seitenverhältnis von DNG-, CR2- und ORF-Bildern, um das vollständige Bild wiederherzustellen

PhotoStation Upload Lr Plugin: Exportieren Sie Fotos von LR direkt auf eine Synology PhotoStation

Programmierung

Bei vielen Kameramodellen finden sich noch viele unbekannte Informationen in den Maker Notes

(Um diese Informationen anzuzeigen, führen Sie exiftool mit der Option -U aus.) In diesem Bereich ist ExifTool in hohem Maße eine Gemeinschaftsleistung, und die Entwicklung ist stark auf die Eingabe von Kamerabesitzern angewiesen, um neue Metainformationen zu dekodieren

Wenn Sie herausfinden, was es bedeutet, senden Sie mir eine E-Mail (philharvey66 at gmail.com) und ich werde Ihre neuen Entdeckungen zu ExifTool hinzufügen

Vielen Dank an alle, die bisher geholfen haben…

Vielen Dank an alle, die Fehlerberichte, Kommentare oder Vorschläge gesendet haben, und besonderen Dank an die folgenden Personen für ihre wertvollen Beiträge und/oder Ergänzungen zum Code:

Malcolm Wotton für seine Hilfe bei den D30 Custom Functions

David Anson für seine Hilfe bei der Lösung von Problemen mit Binärdateien unter Windows

Leon Booyens für seine Vorschläge

Dan Heller für seine Fehlerberichte, detaillierten Vorschläge und Anleitungen

Wayne Smith für seine Hilfe beim Herausfinden der Pentax Maker Notes

Michael Rommel für seine Fehlerbehebungen und Ergänzungen zu den Canon Maker Notes

Joseph Heled für die Hilfe beim Herausfinden einiger Herstellerhinweise zur Nikon D70

Joachim Loehr für das Hinzufügen der Casio Type 2 Maker Notes

Greg Troxel für seine Vorschläge und für das Hinzufügen von ExifTool zu pkgsrc

Thomas Walter für das Herausfinden einiger Nikon-Tags

Brian Ristuccia für weitere Informationen zu einigen Nikon-Tags

Christian Koller für die Dekodierung der 20D Custom Functions

Matt Madrid für seine Tests und sein Feedback

Tom Christiansen für seine Hilfe beim Entschlüsseln einiger Nikon-Tags

Markku Hänninen für die Hilfe beim Dekodieren von Tags für die Olympus E-1

Frank Ledwon für die Entschlüsselung vieler neuer Olympus-Tags

Robert Rottmerhusen für die Dekodierung vieler kniffliger Nikon-Objektivdaten-Tags

Michael Tiemann für das Entschlüsseln einiger neuer Canon-Tags

Albert Bogner für seine Bildbeispiele, Tests und nützlichen Vorschläge

Rainer Hönle für das Entschlüsseln einiger neuer Canon 5D-Tags

Nilesh Patel für seine Hilfe beim Webseiten-Layout

Jens Duttke für seine Vorschläge, Fehlerberichte und Hilfe beim Entschlüsseln neuer Tags

Dave Nicholson für die Entschlüsselung neuer Tags in den Herstellerhinweisen von Pentax und Canon

Bogdan Hrastnik für sein Feedback, seine Entschlüsselungsbemühungen, seinen Benutzersupport und seine ExifTool-GUI

Igal Milchtaich für das Entschlüsseln vieler Sony A100-Tags

Laurent Clévy für seine Arbeit bei der Analyse von Canon RAW-Bildern

Warren Hatch für das Entschlüsseln vieler Nikon-Tags

Jos Roost für das Entschlüsseln vieler Sony-Tags für verschiedene Modelle

Iliah Borg und LibRaw für die Dekodierung vieler roher Entwicklungs-Tags

Bryan K Williams und Hayo Baan für ihre Hilfe beim ExifTool-Forum

Dies ist kostenlose Software; Sie können es unter den gleichen Bedingungen wie Perl selbst weitergeben und/oder modifizieren

ExifTool ist kostenlos, aber auf vielfachen Wunsch biete ich denen, die das Bedürfnis haben, mir etwas Geld zu schicken, eine Möglichkeit

Es ist wirklich nicht notwendig, aber vielen Dank, wenn Sie sich entscheiden, einen Beitrag zu leisten:

$

(Ihre großzügigen Spenden haben die Mittel zur Verfügung gestellt, die zur Registrierung von exiftool.org und zur Bezahlung des Website-Hostings sowie für den Mac Mini verwendet wurden, der zum Generieren von Distributionsdateien, zum Ausführen der erforderlichen virtuellen Windows-Maschine und zum Verwalten von Quellcode- und Foren-Backups verwendet wird.) Wenn Sie Kommentare, Vorschläge oder Fragen haben, posten Sie diese bitte im ExifTool-Forum, damit andere von Ihren Erfahrungen profitieren können

(Ich überprüfe das Forum mindestens so oft wie meine E-Mail.) Andernfalls, wenn Sie mich direkt kontaktieren müssen, steht meine E-Mail-Adresse in der ersten Zeile der README-Datei in der vollständigen Distribution

danke – Phil Harvey

[VB.NET]VB2010 daten aus website auslesen Update New

Video ansehen

Weitere Informationen zum Thema vb net excel datei auslesen

vb net excel datei auslesen Einige Bilder im Thema

 Update New [VB.NET]VB2010 daten aus website auslesen
[VB.NET]VB2010 daten aus website auslesen Update New

Sie können weitere Informationen zum Thema anzeigen vb net excel datei auslesen

Updating

Dies ist eine Suche zum Thema vb net excel datei auslesen

Updating

Sie haben das Thema also beendet vb net excel datei auslesen

Articles compiled by Tratamientorosacea.com. See more articles in category: DIGITAL MARKETING

Related Videos

Leave a Comment