
Erstellte .cmd Datei wird nicht ausgeführt
Erstellte .cmd Datei wird nicht ausgeführt
Ich lese Dateinamen, Pfad und Erweiterung von Dateien in getrennte Spalten einer Tabelle. Aus den Daten dieser Tabelle wird zum Aufrufen der Dateien (Bilder,Videos..) eine cmd Datei erstellt. (incl. Ländercode für die umlaute). Nun lassen sich manche Dateien aufrufen und andere werden nicht ausgeführt. In der (portable)Version 26.2.12 mit der gleichen Tabelle geht alles. In der aktuellen Version 26.8 mal ja, mal nein. Meine Fehleranalyse zeigte mir das der Unterschied nur im Mime Typ der erstellten Datei besteht. Mal us-ascii, mal utf-8. Unter meinem aktuellen Win11 wird dann die mit utf-8 erstellte Datei nicht ausgeführt. Kann ich den Mime Typ irgendwie beim erstellen ändern/vorgeben?
Nachtrag: Datei erstellt wird mit Basic-Macro.
Nachtrag: Datei erstellt wird mit Basic-Macro.
-
Pit Zyclade
- * LO-Experte *
- Beiträge: 3277
- Registriert: Mo 12. Nov 2012, 16:59
Re: Erstellte .cmd Datei wird nicht ausgeführt
Hättest deinen Beitrag besser unter LibreOffice|Programmierung untergebracht als hier in calc, weil das doch spezifisch für Programmierung spricht.
LO 26.2.6.3 (X86_64) / Windows 11 64bit
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Problem gelöst? Dann bitte im Betreff der ersten Nachricht [gelöst] voranstellen.
Re: Erstellte .cmd Datei wird nicht ausgeführt
Also das übliche Gefrickel mit BASIC!?
Magst du uns diesen BASIC-code zeigen, dann könnten wir vielleicht mehr dazu sagen, oder dich mit weiteren konkreten Rückfragen belästigen!
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
Re: Erstellte .cmd Datei wird nicht ausgeführt
Ja, das übliche gefrickel mit Basic. Allerdings in recht komplexer Form. Die Tabelle enthält über 10.000 Einträge die über Macros verwaltet werden. Die Datei ist für meine Fotos, Tieraufnahmen gemacht incl. Taxonomie und Metadaten einlesen (über ExifTool) und im Laufe der Jahre gewachsen. Der Grundcode zum erstellen und aufrufen der cmd ist im Original in
Sub aufruf_x(ereignis) ab Zeile 820 und sieht gekürzt so aus:
'...
tmpordner=Environ("TEMP"): if tmpordner="" then tmpordner=Environ("TMP")
tmpordner=tmpordner+"\"
mycell = mysheet1.getCellByPosition(7,zeile): name1=mycell.string `Pfad
mycell = mysheet1.getCellByPosition(2,zeile): name2=mycell.string 'Name
mycell = mysheet1.getCellByPosition(3,zeile): name3=mycell.string 'erw
dname=tmpordner+"aufruf.cmd" :
inh="@Echo off"+chr$(13)+"chcp 1252 >nul"+chr$(13)+chr$(34)+name1+name2+name3+chr$(34)
num3=freefile
open dname for output as #num3
print #num3,inh
close #num3
Shell (dname,4)
'....
mysheet1 ist natürlich vorher definiert. Bevor weitere Nachfragen nach Code kommen - Die komplette Datei ist sehr komplex und beinhaltet U.a. Betriebsystem (Windows/Linux) und Programm (OpenOff/LibreOff) abfragen. Unter Linux habe ich große Probleme mit einigen Befehlen, was aber jetzt gerade nicht das Problem sein soll. (Kann später mal in angriff genommen werden.)
Da unter Libre der Befehl 'dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, args2()) ' nicht ausgeführt wird wenn die Spalte Hidden ist, musste ich die Programmversionsabfrage mit einbauen um diese Spalte bei Bedarf vorher Einzublenden.
Die komplette Datei ist im Anhang. Alle eingetragenen Dateien sind natürlich nur auf meinem Recher vorhanden. Das erstellen der cmd sollte aber auch ohne diese gehen.
Sub aufruf_x(ereignis) ab Zeile 820 und sieht gekürzt so aus:
'...
tmpordner=Environ("TEMP"): if tmpordner="" then tmpordner=Environ("TMP")
tmpordner=tmpordner+"\"
mycell = mysheet1.getCellByPosition(7,zeile): name1=mycell.string `Pfad
mycell = mysheet1.getCellByPosition(2,zeile): name2=mycell.string 'Name
mycell = mysheet1.getCellByPosition(3,zeile): name3=mycell.string 'erw
dname=tmpordner+"aufruf.cmd" :
inh="@Echo off"+chr$(13)+"chcp 1252 >nul"+chr$(13)+chr$(34)+name1+name2+name3+chr$(34)
num3=freefile
open dname for output as #num3
print #num3,inh
close #num3
Shell (dname,4)
'....
mysheet1 ist natürlich vorher definiert. Bevor weitere Nachfragen nach Code kommen - Die komplette Datei ist sehr komplex und beinhaltet U.a. Betriebsystem (Windows/Linux) und Programm (OpenOff/LibreOff) abfragen. Unter Linux habe ich große Probleme mit einigen Befehlen, was aber jetzt gerade nicht das Problem sein soll. (Kann später mal in angriff genommen werden.)
Da unter Libre der Befehl 'dispatcher.executeDispatch(document, ".uno:AutoFill", "", 0, args2()) ' nicht ausgeführt wird wenn die Spalte Hidden ist, musste ich die Programmversionsabfrage mit einbauen um diese Spalte bei Bedarf vorher Einzublenden.
Die komplette Datei ist im Anhang. Alle eingetragenen Dateien sind natürlich nur auf meinem Recher vorhanden. Das erstellen der cmd sollte aber auch ohne diese gehen.
- Dateianhänge
-
- Natur-Tiere_alle.ods
- (2.28 MiB) 7-mal heruntergeladen
Re: Erstellte .cmd Datei wird nicht ausgeführt
Kann ich diesen Beitrag noch nach Programierung verschieben?
- miesepeter
- * LO-Experte *
- Beiträge: 2316
- Registriert: So 19. Dez 2010, 18:16
- Wohnort: Bayern
Re: Erstellte .cmd Datei wird nicht ausgeführt
Hallo,
das kann nur Moderator:in. Hier in diesem Forum eher selten zu sehen...
Was du machen kannst:
- Kopiere deinen letzten ausführlichen Beitrag (Calc-Forum) und eröffne in "Programmierung" ein neues Thema, füge diesen Beitrag dort ein. Verankere auch deine Beispieldatei dort (neu einfügen, anzeigen).
- Lösche den Beitragstext im Calc-Forum und füge stattdessen einen Link zum neu eröffneten Thema (Prorgrammierung-Forum) ein.
Re: Erstellte .cmd Datei wird nicht ausgeführt
Hallo,
eine Suche ergab
Dazu wirst du allerdings den Weg über den Service com.sun.star.ucb.SimpleFileAccess gehen. siehe Andrew Pitonyak, BASIC-Makros für OpenOffice und LibreOffice, Kapitel 10.12.4.
eine Suche ergab
Daher vermute ich, dass es am sinnvollsten wäre, die cmd-Datei in genau diesem Zeichensatz zu erstellen.Die cmd.exe erwartet standardmäßig den ANSI-Zeichensatz (unter Windows im deutschsprachigen Raum meist Codepage 1252). Wenn Umlaute oder Sonderzeichen enthalten sind und die Datei als UTF-8 gespeichert wurde, schlägt die Ausführung fehl oder erzeugt Syntaxfehler
Dazu wirst du allerdings den Weg über den Service com.sun.star.ucb.SimpleFileAccess gehen. siehe Andrew Pitonyak, BASIC-Makros für OpenOffice und LibreOffice, Kapitel 10.12.4.
Gruß,
mikele
mikele
Re: Erstellte .cmd Datei wird nicht ausgeführt
Das KANN man vielleicht so machen, ich würde für diesen Teil aber komplett auf das Gewurstel per Makro verzichten, und stattdessen ein paar einfache HYPERLINK(…)-formeln in die Tabelle einbauen!mikele hat geschrieben: ↑So 27. Sep 2026, 13:51
Daher vermute ich, dass es am sinnvollsten wäre, die cmd-Datei in genau diesem Zeichensatz zu erstellen.
Dazu wirst du allerdings den Weg über den Service com.sun.star.ucb.SimpleFileAccess gehen. siehe Andrew Pitonyak, BASIC-Makros für OpenOffice und LibreOffice, Kapitel 10.12.4.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)
Re: Erstellte .cmd Datei wird nicht ausgeführt
Weiter unter Programierung
posting.php?mode=post&f=12
posting.php?mode=post&f=12
-
Mondblatt24
- * LO-Experte *
- Beiträge: 3652
- Registriert: Fr 3. Mär 2017, 17:12
Re: Erstellte .cmd Datei wird nicht ausgeführt
Weiter geht es hier.
Win 11 (x64) ▪ LO 26.2.6.3 (x64) ▪ AOO Portable 4.1.16
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.
