2017-08-18 1 views
0

Ich möchte ein Python-Skript von AutoIt mit ShellExecuteWait() ausführen. Mein Versuch:Ausführen eines externen Programms mit Befehlszeilenargumenten

$x = ShellExecuteWait("E:/Automation/Python/Scripts/ReadLog.py", '-f "file.log" -k "key" -e "errMsg" ') 
MsgBox(0,"x=",String($x)) 
If @error Then 
    MsgBox(0,"Error=",String(@error)) 
EndIf 

ich einige Prozess-ID in $x sehen können, und @error wird auch auf 0 (bedeutet AutoIt das Skript ausgeführt wird). Aber mein Python-Skript produziert keine Ergebnisse (es schreibt in eine TXT-Datei, wenn es unabhängig ausgeführt wird). Scheint, das Problem ist, wie Kommandozeilenparameter mit übergeben:

ShellExecuteWait("E:/Automation/Python/Scripts/ReadLog.py", '-f "file.log" -k "key" -e "errMsg" ') 

Wie kann ich Argumente Befehlszeile ShellExecuteWait() geben? Syntax:

ShellExecuteWait ("Dateiname" [, "Parameter" [ "workingdir" [ "Verb" [, showflag]]]])

Parameter:

Dateiname: - The Name der auszuführenden Datei (EXE, .txt, .lnk usw.).

Parameter: - [optional] Alle Parameter für das Programm. Leer ("") verwendet keine.

Dies enthält Beispiele für die Verwendung von Parametern. Es gibt keine Probleme mit dem Python-Skript (es erfordert 3 Befehlszeilenargumente, Zeichenfolgen mit den Optionen -f, -k und -e).

In Verbindung stehend: How to run or execute python file from autoit.

+0

[Verwandte] (https://www.autoitscript.com/forum/topic/189963-how-to-pass-command-line- Argumente-zu-Programm-Python-from-runwait /). – user4157124

Antwort

0

Überprüfen Sie den Pfad zu Ihrer Python-Binärdatei (z. B. Python.exe, wo immer sich Ihr Python-Programm/Binärprogramm befindet) in der Systemumgebung/im Pfad Ihres Windows.

Execute Python script from AutoIt Wenn der Pfad vorhanden ist, muss der Code funktionieren. In $x erhalten Sie Return-Exit-Code des Python-Skripts.

Sie können auch versuchen:

RunWait('full_path\Python.exe ReadLog.py -f "file.log" -k "key" -e "errMsg"', 'full_path_of_working_directory') 
0

AutoIt führt keine externen Programme/Skripte, bis Sie das Arbeitsverzeichnis (optionale Parameter für alle ausführen und Ausführen von Befehlen) übergeben. So passieren das Arbeitsverzeichnis als separate Parameter und es wird funktionieren:

RunWait('full_path\Python.exe ReadLog.py -f "file.log" -k "key" -e "errMsg"', 'full_path_of_working_directory') 
Verwandte Themen