我想使用ShellExecuteWait()
从AutoIt执行Python脚本。我的尝试:
$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
我可以在$x
中看到一些进程ID,@error
也会设置为0
(表示AutoIt执行了脚本)。但是我的Python脚本没有产生结果(它在独立执行时写入txt文件)。似乎问题在于传递命令行参数,如:
ShellExecuteWait("E:/Automation/Python/Scripts/ReadLog.py", '-f "file.log" -k "key" -e "errMsg" ')
如何使用ShellExecuteWait()
传递命令行参数?语法:
ShellExecuteWait(“filename”[,“parameters”[,“workingdir”[,“verb”[,showflag]]]])
参数:
filename: - 要运行的文件的名称(EXE,.txt,.lnk等)。
参数: - [可选]程序的任何参数。空白(“”)不使用任何内容。
这没有使用参数的例子。 Python脚本没有问题(它需要3个命令行参数,带有选项-f
,-k
和-e
的字符串)。
答案 0 :(得分:0)
在Window的系统环境/路径中检查Python二进制文件的路径(例如Python.exe,无论您的Python程序/二进制文件位于何处)。
Execute Python script from AutoIt如果路径在那里,那么您的代码必须正常工作。在var top = document.getElementById("MyVideo").style.top.replace(/\D+/g,'');
var num = parseFloat(top) + 1;
$("#MyVideo").css({"top": num + "%"});
中,您将收到Python脚本的返回退出代码。
你也可以尝试:
$x
答案 1 :(得分:0)
AutoIt在您传递工作目录(所有执行和运行命令的可选参数)之前不会执行外部程序/脚本。因此,将工作目录作为单独的参数传递,它将起作用:
RunWait('full_path\Python.exe ReadLog.py -f "file.log" -k "key" -e "errMsg"', 'full_path_of_working_directory')