LabVIEWForum.de
System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht (/Thread-System-Exec-was-in-der-normalen-Console-funktioniert-geht-mit-der-LV-vi-nicht)

Seiten: 1 2


System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - MartinLoreck - 16.08.2012 07:53

Hallo
vorweg, ich beziehe mich auf Labview 8.5 und danke fürs Lesen Smile

Ich möchte mit 7zip einige Sachen packen und entpacken. Das Packen klappt auch.
Jedoch erhalte ich bei meiner anderen vi die für das entpacken verantwortlich ist immer den Ausgabefehler "Die Syntax fr den Dateinamen, Verzeichnisnamen oder die Datentr„gerbezeichnung ist falsch."
Obwohl das was ich in die System Exec vi hineinwerfe als Kommando für die manuell ausgeführte Kommandozeile funktioniert

Kann mir jemand da vielleicht helfen?

Ich häng mal das vi an, wie gesagt 8.5

Danke im voraus


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - GerdW - 16.08.2012 08:25

Hallo Martin,

Offtopic
So könnte dein VI auch aussehen:
[attachment=41114]
Ich finde es so wesentlich übersichtlicher, insbesondere die große AppendString-Funktion ist immer fehlerträchtig...

Zum Thema:
Probier doch mal, das Kommando fest (per String-Control) vorzugeben, um zu testen, wann es funktioniert. Dann diesen Fall nachprogrammieren...


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - MartinLoreck - 16.08.2012 08:41

Hallo Gerd,
Ja das sieht gut aus was du da aufgeräumt hast, jedoch kenne ich diese Funktion überhaupt nicht.
Und muss ich sagen, dass mein String am Ende auf jeden Fall mit dem übereinstimmt, den ich in der normalen commandline benutze. Das habe ich mir am Ende bei dem Concatenated String Indicator ausgeben lassen und habs verglichen. Ich weiß nicht was ich da noch ändern soll. Was macht Labview da anders?


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - GerdW - 16.08.2012 08:45

Hallo Martin,

die Funktion heißt FormatIntoString.
Ich sah auch keinen Grund, lokale Variablen zu nutzen, wenn man die (bisherigen) Indicator auch in Controls umwandeln kann.

- Du könntest z.B. irgendwelche Whitespaces durch Tippfehler drin versteckt haben.
- Du könntest Probleme aufgrund nicht gesetzten "WorkDir"-Eingangs haben (Kontexthilfe zu SystemExec lesen).


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - MartinLoreck - 16.08.2012 09:17

Hi Gerd,
das mit dem WorkDir hab ich getestet und es funktioniert auch damit nicht. Das aus der Hilfe unterstreicht das.
Gibt es denn eine Möglichkeit das System Exec vi so auszuführen, dass es nach Ausführung das cmd Fenster offen lässt? Dann könnte man vielleicht mehr erfahren?
Auch der Batch Befehl "PAUSE" wird ja einfach ignoriert ;(

Gruß Martin

EDIT: Das mit dem geöffnet lassen bringt keinen Erfolg ;(


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - GerdW - 16.08.2012 09:32

Hallo Martin,

Zitat:Auch der Batch Befehl "PAUSE" wird ja einfach ignoriert ;(
Wie rufst du den denn auf?

Schreib doch mal deine Befehle in eine Batchdatei (also sowohl "7zip" als auch "pause") und rufe diese Batchdatei auf...

Zitat:Gibt es denn eine Möglichkeit das System Exec vi so auszuführen, dass es nach Ausführung das cmd Fenster offen lässt?
Nein. Entweder die Batchdatei läuft noch und das Fenster bleibt offen oder die Batchdatei ist abgearbeitet und die zugehörige Shell schließt sich. Dies ist kein SystemExec-Feature, sondern eine Eigenschaft der Shell.


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - MartinLoreck - 16.08.2012 09:34

Also sehr kurios, es ist gelöst

Bei meinem Aufruf des Packens muss ich dem Befehl ein cmd /c voranstellen
und beim Entpacken funktioniert das ganze nur ohne das cmd /c

ich weiß nicht warum aber nun geht es

Danke Gerd für deine Mühe


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - MartinLoreck - 16.08.2012 09:50

(16.08.2012 09:32 )GerdW schrieb:  Nein. Entweder die Batchdatei läuft noch und das Fenster bleibt offen oder die Batchdatei ist abgearbeitet und die zugehörige Shell schließt sich. Dies ist kein SystemExec-Feature, sondern eine Eigenschaft der Shell.

Doch das geht. Statt dem cmd /c schreibt man cmd /k und bei wait until eine false Konstante. Dann bleibt das command offen.


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - GerdW - 16.08.2012 09:53

Hallo Martin,

das deckt sich mit meiner Aussage: Die Batchdatei endet nicht, da
Code:
/K      Führt den Befehl in der Zeichenfolge aus und endet dann nicht.
Batchdatei läuft noch, Fenster bleibt offen...


RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht - rolfk - 17.08.2012 09:47

(16.08.2012 07:53 )MartinLoreck schrieb:  Hallo
vorweg, ich beziehe mich auf Labview 8.5 und danke fürs Lesen Smile

Ich möchte mit 7zip einige Sachen packen und entpacken. Das Packen klappt auch.
Jedoch erhalte ich bei meiner anderen vi die für das entpacken verantwortlich ist immer den Ausgabefehler "Die Syntax fr den Dateinamen, Verzeichnisnamen oder die Datentr„gerbezeichnung ist falsch."
Obwohl das was ich in die System Exec vi hineinwerfe als Kommando für die manuell ausgeführte Kommandozeile funktioniert

Kann mir jemand da vielleicht helfen?

Ich häng mal das vi an, wie gesagt 8.5

Danke im voraus

cmd ist nur die commandshell und die macht Dinge wie current directory resolution, batch file Interpretation, Ausführen von Filetyp spezifischen default Programmen anhand der Registry und die Ausführung von Shell Kommandos. Das sind also die DOS Kommandos die nicht als executable in <Windows>/<System> vorhanden sind sondern in der Shell selber ausgeführt werden.

Da Du den Pfad zu 7-z als vollen Pfad anzugeben scheinst, sollte cmd eigentlich nicht nötig sein. LabVIEW lässt Windows einfach einen Prozess erzeugen mit dem ganzen String. Windows interpretiert den ersten Parameter als Prozess der gestartet werden soll und übergibt diesem den Rest des Strings als Parameter. Aber ich sehe dass Du den Pfad zu 7-z in Anführungszeichen hast, und es könnte sein dass die Prozesserzeugung in Windows keine Quoted Strings parsen kann. Deshalb funkt es mit cmd voran, das kann durch CreateProcess() richtig interpretiert werden und cmd macht dann den Rest.

Nun noch kurz zur ZIP File Erzeugung. Es gibt auch eine OpenG Library mit der man in LabVIEW direkt ZIP Files packen und entpacken kann. Am einfachsten kann man die mit dem VIPM installieren.