Skripte über Kommandozeile starten
Voraussetzung: Im Dateisystem liegt eine gültige Python-Skriptdatei <filename>.py
.
Erstellen Sie eine CMD-Datei mit dem Kommando
start
, das CODESYS startet,Und mit der Option --runscript, die die Skriptdatei aufruft.
Weitere Optionen sind möglich, beispielsweise
--noUI
, wenn die CODESYS-Benutzeroberfläche nicht geöffnet werden soll.Öffnen Sie das Windows-Fenster Eingabeauforderung und starten darüber die CMD-Datei.
Sie können Argumente mit zusätzlichen Informationen an das Skript übergeben. Python-Skripte können auf die Argumente mit der sys.argv[]
-Liste zugreifen. Das erste Element (Index 0) ist immer der Name oder Pfad des Python-Skripts, das ausgeführt wird, gefolgt von den „tatsächlichen“ Parametern. (Dies ist ähnlich wie bei argc
/argv
in C.)
Zusätzlich können Skripte auch auf Umgebungsvariablen zugreifen, die gesetzt werden, bevor CODESYS mit den entsprechenden Python- oder .NET- APIs gestartet wird.
Sie haben eine CMD-Datei (Batch-Datei) argvtestbat.cmd
mit folgendem Inhalt (alles in einer Zeile).
"C:\Program Files (x86)\CODESYS 3.5.17.0\CODESYS\Common\CODESYS.exe" --profile="CODESYS V3.5 SP17" --runscript="D:\Dokumente\Scripting\ArgvTestScript.py" --scriptargs:'username password 3.14 "path=\"C:\temp\\\""' --noUI
Sie haben ein dazu passendes Skript ArgvTestScript.py
.
from __future__ import print_function import sys print("sys.argv: ", len(sys.argv), " elements:") for arg in sys.argv: print(" - ", arg)
Wenn Sie nun die CMD-Datei ausführen, startet CODESYS und führt das Skript aus, ohne das CODESYS-Hauptfenster zu öffnen. Danach wird CODESYS wieder beendet:

Eine komplette Referenz aller möglichen Kommandozeilenparameter sehen Sie auf der Hilfeseite zur Kommandozeilen-Schnittstelle im Abschnitt zu --runscript
.
Für weitere Informationen siehe: Kommandozeilenschnittstelle, Option --runscript
Für Informationen zur Python-API siehe: https://docs.python.org/2/library/os.html#process-parameters
Für Informationen zur .NET-API siehe: https://msdn.microsoft.com/de-de/library/77zkk0b6%28v=vs.110%29.aspx