Cmd 如何在Lua中保持os.execute(…)窗口打开?
我有一个简单的Lua项目,每隔几分钟运行一个NodeJS脚本。NodeJS脚本设置一个函数间隔,并每隔一秒左右向API发出一个请求 我的Lua看起来像这样:Cmd 如何在Lua中保持os.execute(…)窗口打开?,cmd,lua,Cmd,Lua,我有一个简单的Lua项目,每隔几分钟运行一个NodeJS脚本。NodeJS脚本设置一个函数间隔,并每隔一秒左右向API发出一个请求 我的Lua看起来像这样: 函数初始化() 运行=错误 结束 函数更新() 如果不运行,则 运行=真 execute(table.concat({“npm”,“i”},”)) execute(table.concat({“npm”,“start”},”)) 结束 结束 如何保持用os.execute()打开的命令提示符窗口保持打开状态?它在命令完成后关闭,但我想在它
函数初始化()
运行=错误
结束
函数更新()
如果不运行,则
运行=真
execute(table.concat({“npm”,“i”},”))
execute(table.concat({“npm”,“start”},”))
结束
结束
如何保持用os.execute()
打开的命令提示符窗口保持打开状态?它在命令完成后关闭,但我想在它关闭之前查看输出。不,我不希望结果出现在我的Lua代码中,我只想看到窗口
提前谢谢
编辑:我正在Windows 10上运行
os.execute([[start "NPM" %ComSpec% /D /E:ON /K "call npm.cmd i & call npm.cmd start"]])
(根据外交部的准则)
在同一窗口上依次运行npm i
和npm start
os.execute([[start "npm i" %ComSpec% /D /E:ON /K "call npm.cmd i"]])
os.execute([[start "npm start" %ComSpec% /D /E:ON /K "call npm.cmd start"]])
在不同的窗口上依次运行npm i
和npm start
说明:[[
用于转义引号和lua序列。start
使用一些选项运行命令窗口并执行“npm i”
我不确定是否需要
call
和.cmd
(它运行时没有)使用LoA的方法类似于C或C++中的函数。它意味着在Windows上执行Windows命令处理程序>代码> %Sturrase%s\Stult32 \CMD.exe < /C> >选项>代码> /C>代码>在完成命令行和LUA中定义的命令行之后关闭命令进程。脚本作为附加参数附加。因此,第一个os.execute
导致执行C:\Windows\System32\cmd.exe/C npm i
,第二个在C:\Windows\System32\cmd.exe/C npm start
中。打开一个,运行cmd/?
并阅读输出帮助。这里解释了Windows命令处理器cmd.exe是如何运行的
解释参数字符串在选项/C
或选项/K
之后,这将导致在完成指定命令行的执行后保持命令处理器运行。在命令提示符窗口中,运行,其中npm
和output是完整的限定文件名。您可以看到npm
在Windowsnpm.cmd
上是一个batch文件,这一点非常重要。您希望使用os.execute执行的内容类似于start“NPM”%ComSpec%/D/E:ON/K“call NPM.cmd i&call NPM.cmd start”
。这看起来很疯狂。Windows命令处理器cmd.exe
由os启动,带有/c
选项。execute
使用其内部命令执行命令行start
使用标题为NPM
的新控制台窗口启动另一个命令进程,忽略AutoRun
注册表值,并启用命令扩展名,可调用两次npm.cmd
,以保持第二个命令进程运行。谢谢!它在没有批处理文件的情况下工作,这非常有用:)