使用命令行参数执行外部程序

时间:2017-08-18 13:26:08

标签: python autoit

我想使用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的字符串)。

相关:How to run or execute python file from autoit

2 个答案:

答案 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')