System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht
Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht
Hallo
vorweg, ich beziehe mich auf Labview 8.5 und danke fürs Lesen
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 fr 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
RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht
Hallo Martin,
So könnte dein VI auch aussehen:
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
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?
16.08.2012, 08:45 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2012 08:47 von GerdW.)
RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht
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
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 ;(
16.08.2012, 09:32 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2012 09:33 von GerdW.)
RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht
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
(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.
16.08.2012, 09:53 (Dieser Beitrag wurde zuletzt bearbeitet: 16.08.2012 09:54 von GerdW.)
RE: System Exec - was in der normalen Console funktioniert, geht mit der LV vi nicht
(16.08.2012 07:53 )MartinLoreck schrieb: Hallo
vorweg, ich beziehe mich auf Labview 8.5 und danke fürs Lesen
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 fr 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.