LabVIEWForum.de
"Systembefehl ausführen" verhält sich merkwürdig - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: "Systembefehl ausführen" verhält sich merkwürdig (/Thread-Systembefehl-ausfuehren-verhaelt-sich-merkwuerdig)

Seiten: 1 2


RE: "Systembefehl ausführen" verhält sich merkwürdig - A_Bachmann - 04.12.2012 10:24

Du hast Recht, damit klappt das. Ok, also für in die Shell eingebaute Kommandos braucht man "cmd /c" als erstes, wie in der Hilfe zu dem VI beschrieben.


RE: "Systembefehl ausführen" verhält sich merkwürdig - A.Berndsen - 04.12.2012 10:54

Wer lesen kann, ist klar im Vorteil! Big Grin

Grüße
Andreas


RE: "Systembefehl ausführen" verhält sich merkwürdig - rolfk - 09.12.2012 13:57

(04.12.2012 10:24 )A_Bachmann schrieb:  Du hast Recht, damit klappt das. Ok, also für in die Shell eingebaute Kommandos braucht man "cmd /c" als erstes, wie in der Hilfe zu dem VI beschrieben.

Ganz eindeutig. Der Grund ist das SystemExec einfach einen Prozess erzeugt und diesem die Kommandozeile übergibt. Wenn das Kommando aber kein real existierendes Programm auf der Disk ist, meckert Windows dass es das Kommando nicht finden konnte und der dabei zurückgegebene Fehler wird etwas unpraktisch in den LabVIEW Fehler 2 umgesetzt (was dann diesen dummen Speicherfehler angibt, was natürlich überhaupt nicht stimmt).

Der Fehler den viele machen ist, anzunehmen dass SystemExec synonym ist zur DOS Box. Aber die DOS Box ist im wesentlichen cmd.exe mit eigenem User Interface. Die kann auch Systemkommandos ausführen (typischerweise als Executables im Windows oder System Verzeichnis abgelegt) aber kennt eben auch viele interne Kommandos die direkt ausgeführt werden ohne irgend ein spezielles Executable auf der Harddisk.

cmd /c voran zum SystemExec Kommando sollte also grundsätzlich immer funktionieren kann aber ungewünschte Folgen haben für Parametersubstitution beim koppeln von cmd.exe und einem externen Executable. Das ist auch der Grund warum SystemExec nicht grundsätzlich cmd.exe instantiert um dann das eigentliche Kommando auszuführen.