我很高兴使用
在Lua的Windows系统中启动程序strProgram = '"C:\\Program Files\\Ps Pad\\PSPad.exe"'
strCmd = 'start "" '..strProgram
os.execute(strCmd)
这样可以正常工作,启动程序和脚本完成。 然而,如果它在几分之一秒内闪现命令窗口,那么任何人都可以从Lua启动程序。
答案 0 :(得分:7)
Lua的os.execute命令基于C标准库“shell”函数。在Windows中,此函数将始终创建一个命令窗口,它将始终停止当前进程,直到窗口完成。后者也发生在Linux中。
最终无法解决这个问题。不是通过Lua标准API。由于Lua需要轻量级且与平台无关,因此不允许API使用依赖于操作系统的本机API。
您最好的选择是使用Lua Ex-Api模块。它实际上是放弃软件,你可能需要修补一些编译器问题(我猜测Windows端口不是他们的首要任务)。但它是产生进程的一种相当好的方法。您可以选择等到自己完成,或让它们并行运行。并且它不会抛出命令提示符窗口,除非应用程序本身使用它。
答案 1 :(得分:1)
这是我用来从Lua调用批处理的代码段,也许是帮助。 在win控制台(命令提示符)中打开并执行,同样在unix(mac | nix)
中General -> Processing -> Automatically open the Report window before starting a processing task
答案 2 :(得分:0)
这是一种仅使用Lua标准API(即没有额外的库)运行没有控制台窗口的命令的方法。在Win7 x64上测试。
function exec_silent(command)
local p = assert(io.popen(command))
local result = p:read("*all")
p:close()
return result
end
编辑:请参阅下面的评论,它可能不适用于所有人。我不确定为什么。