PowerShell: umbenennen/konvertieren von jpg und bmt in txt (evtl. über xls oder csv)

Caro15

Newbie
Registriert
Mai 2015
Beiträge
6
Ich bin absoluter Anfänger, lese schon viele Stunden und finde einfach keinen Anfang, wie ich mein Anliegen umsetzen kann. Vielleicht kann mir hier jemand behilflich sein.

Ich habe Wärmebilder in .bmt- oder .jpg-Dateien. Diese möchte ich gerne in .txt umbenennen bzw. konvertieren. Hierzu habe ich auch bereits eine Batch geschrieben, die funktionerit hat. Das Problem dabei war, dass die Datei am Ende jedoch keine Werte mehr enthielten.

Bei den Wärmebildern steckt hinter jedem Pixel ein Temperaturwert. Führe ich z. B. "speichern unter" in der entsprechenden von der Kamera mitgelieferten Software aus, so kann ich über .xls (die Software lässt nur .xls zu) die Dateien anschließend als .txt abspeichern. Alle Temperaturwerte bleiben erhalten.

Da ich sehr viele Dateien habe, würde ich dies gerne automatisieren, evlt. mit einer PowerShell. Kann mir jemand sagen, ob das funktioniert und welche Befehle ich dazu brauche?

Ich habe auch einiges über Pfade und Profilskripte gelesen, aber nicht viel davon verstanden. Die Anleitung die ich dazu habe ist eigentlich für Windows-Administratoren gedacht und daher für mich zu kompliziert geschrieben. Muss ich hier auch noch etwas beachten?

Falls ich mein Thema zu ungenau beschreiben habe oder es noch Fragen gibt, bitte nachhaken. Danke!
 
Du kannst das nur über die Software machen. Wenn die Software Kpommandozeilenparameter unterstützt, dann verwendest Du am besten diese. Dazu Dokumentation anschauen.

Wenn das nicht geht, kannst Du über einen "Makro" Rekorder Mausklicks aufzeichnen und so mit viel basteln die Dateien konvertieren.

Einfaches Umbenennen reicht nicht.
 
Woran erkenne ich, ob die Software, ich nehme an du meinst die SW der Wärmebildkamera, Kommandozeilenparameter unterstützt? In der Bedienungsanleitung kann ich jedenfalls nichts finden.

Innerhalb z. B. Excel kann man Mausklicks aufzeichnen und so ein Makro schreiben. Aber wie geht das bei zwei oder mehr Programmen?
 
Folgende Fehlermeldung habe ich bei eingabe "FLIR.exe -h" erhalten:

Die Benennung "FLIR.exe" wurde nicht als Name eines Cmdlet, einer Funktion, einer Skriptdatei oder eines ausführbaren Programms erkannt. Überprüfen Sie die Schreibweise des Namens, oder ob der Pfad korrekt ist (sofern enthalten), und wiederholen Sie den Vorgang.
Bei Zeile:1 Zeichen:9
+ FLIR.exe <<<< -h
+ CategoryInfo : ObjectNotFound: (FLIR.exe:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Wie ist das eigentlich mit dem Pfad? Normalerweise bekomme ich "C:\Windows\system32> " angezeigt. Heißt das, dass das Programm von hier aus arbeitet? Und wenn meine Kamera.exe woanders liegt, PS nicht darauf zugreift? Wird nicht automatisch von dem Ort aus gearbeitet, wo die PS liegt und auch aufgerufen wird?

Wie bereits eingangs erwähnt bin ich Anfänger und bitte um einfache und verständliche Erklärungen. Danke!
 
Im admin. CMD (aka Eingabeaufforderung):

Code:
"Pfad\zur\FLIR.exe" -h

alternativ auch -? und --help als Switches testen, anstelle von -h.



[TIP: Bei gedrückter Shift-Taste Rechtsklick auf die FLIR.exe im Explorer und 'Als Pfad kopieren', dann per Rechtsklick in CMD 'Einfügen']
 
Zuletzt bearbeitet von einem Moderator:
Seltsamerweise bekomme ich seit heute eine Fehlermeldung angezeigt, sobald ich die Windows PowerShell ISE öffne, ganz gleich ob mit oder ohne "Als Administrator ausführen":

Sie müssen auf der rechten Seite des Operators "-" einen Wertausdruck angeben.
Bei C:\Windows\System32\WindowsPowerShell\v1.0\Microsoft.PowerShellISE_profile.ps1:13 Zeichen:74
+ "Es stehen {0} Cmdlets und {1} Functions in {2} Modulen zur Verfügung." - <<<<
+ CategoryInfo : ParserError: (: ) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : ExpectedValueExpression

Was hat das zu bedeuten? Wahrscheinlich steht es da, nur verstehe ich nicht, wie ich sie wieder wegbekomme. Das hat bestimmt mit dem Inhalt von Microsoft.PowerShellISE_profile.ps1 zu tun, die ich gestern lt. einer Anleitung für Windows-Administration anlegen sollte.

# Profilskript für alle Hosts und den aktuellen Benutzer
# Hintergrundfarbe für Fehlermeldungen ändern
$Host.PrivateData.ErrorBackgroundColor = "White"
# Aktuelles Verzeichnis setzen
if (Test-Path -Path $env:userprofile\documents\windowspowershell)
{
cd $env:userprofile\documents\windowspowershell
}
# Anzahl der zur Verfügung stehenden Commands ausgeben
"Es stehen {0} Cmdlets und {1} Functions in {2} Modulen zur Verfügung." -
f (Get-Command -CommandType Cmdlet).Count, (Get-Command -CommandType
Function).Count, (Get-Module -ListAvailable).Count

Ich weiß nicht, ob es mit der obigen Fehlermeldung zu tun hat, aber bislang bekomme ich immer eine Fehlermeldung zurück.

> "Pfad\zur\FLIR.exe" -h
Sie müssen auf der rechten Seite des Operators "-" einen Wertausdruck angeben.
At line:1 char:73
Unerwartetes Token "h" im Ausdruck oder in der Anweisung.
At line:1 char:74

> "Pfad\zur\FLIR.exe" --help
Der ---Operator kann nur für Variablen oder Eigenschaften verwendet werden.
At line:1 char:73

> "Pfad\zur\FLIR.exe" -?
Sie müssen auf der rechten Seite des Operators "-" einen Wertausdruck angeben.
At line:1 char:73
Unerwartetes Token "?" im Ausdruck oder in der Anweisung.
At line:1 char:74
Ergänzung ()

Ich habe versucht, anhand dieses Links http://stackoverflow.com/questions/6...ing-powershell Dateien von xls in csv zu konvertieren. Ich bekomme jedoch nur ganz viele Fehlermeldungen:

Ausnahme beim Aufrufen von "Open" mit 1 Argument(en): "Excel kann auf die Daten in '0407' nicht
zugreifen. Die Datei ist unter Umständen schreibgeschützt oder verschlüsselt."
Bei C:\Thermografie\xls_csv.ps1:7 Zeichen:32
+ $wb = $excel.Workbooks.Open <<<< ($file.FullName)
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation

Sie können keine Methode für einen Ausdruck mit dem Wert NULL aufrufen.
Bei C:\Thermografie\xls_csv.ps1:8 Zeichen:15
+ $wb.SaveAs <<<< ($dst_dir + $file.Name + ".csv", 6)# 6 -> csv
+ CategoryInfo : InvalidOperation: (SaveAs:String) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

...

Ausnahme beim Aufrufen von "Open" mit 1 Argument(en): "Excel kann auf die Daten in 'AdvancedIns
tallers' nicht zugreifen. Die Datei ist unter Umständen schreibgeschützt oder verschlüsselt."
Bei C:\Thermografie\xls_csv.ps1:7 Zeichen:32
+ $wb = $excel.Workbooks.Open <<<< ($file.FullName)
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation

...

Ausnahme beim Aufrufen von "Open" mit 1 Argument(en): "'C:\Windows\system32\appmgmt.xlsx' wurde
nicht gefunden. Überprüfen Sie die Rechtschreibung des Dateinamens, und überprüfen Sie, ob der
Speicherort der Datei korrekt ist.

Wenn Sie versuchen, die Datei über die Liste der zuletzt geöffneten Dateien zu öffnen, stellen S
ie sicher, dass die Datei nicht umbenannt, verschoben oder gelöscht wurde."
Bei C:\Thermografie\xls_csv.ps1:7 Zeichen:32
+ $wb = $excel.Workbooks.Open <<<< ($file.FullName)
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation

...
 
Zuletzt bearbeitet:
Dein Programm muß ja keine Parameter unterstützen.

Um das zu testen, nutze nicht Powershell sondern ein CMD prompt.

Wechsel zum Pfad mit der exe Datei und gebe dort die vorgeschlagenen Möglichkeiten ein.
 
Was genau meinst du mit CMD prompt? Soll ich eine Datei mit der Endung .cmd erstellen? Oder soll ich die cmd.exe aufrufen?
 
Wenn ich das richtig verstanden habe, funktionerit das nicht über Microsoft PowerShell ISE.
 
Doch, aber Du muß dich damit auskennen.

Also versuche es über die Eingabeaufforderung, ob Kommandozeilenparameter überhaupt unterstützt werden. Sonst kannst Du sowieso nur versuchen, Tools dafür zu finden oder eben z.B. AutoIT verwenden.

Es gibt eventuell auch eine DDE oder OLE Unterstützung. Für all das brauchst Du aber die Dokumentation deines Programms.

Oder Du nutzt das SDK: http://www.flir.com/thermography/americas/us/view/?id=60091

So und nun mal ein wenig Eigeninitiative!
 
Zurück
Oben