Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Cmd 如何在Lua中保持os.execute(…)窗口打开?_Cmd_Lua - Fatal编程技术网

Cmd 如何在Lua中保持os.execute(…)窗口打开?

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()打开的命令提示符窗口保持打开状态?它在命令完成后关闭,但我想在它

我有一个简单的Lua项目,每隔几分钟运行一个NodeJS脚本。NodeJS脚本设置一个函数间隔,并每隔一秒左右向API发出一个请求

我的Lua看起来像这样:

函数初始化()
运行=错误
结束
函数更新()
如果不运行,则
运行=真
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
在Windows
npm.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
,以保持第二个命令进程运行。谢谢!它在没有批处理文件的情况下工作,这非常有用:)