Lua–popen 2x'&&'chained setp–stdout需要休假

Lua–popen 2x'&&'chained setp–stdout需要休假,第1张

概述Lua – popen 2x'&&'chained set / p – stdout需要休假

我在一个lua脚本运行的时候,在一个functionui几乎为零的环境中工作。 这对于我需要编写的脚本来说是不可接受的,而脚本在很大程度上依赖于用户input。 我发现绕过这一切的唯一方法是使用io.popen与一些相当狡猾的命令。

我意识到我在这里要做的事情是奇怪的,而且是非常错误的,而且我已经把自己带到了这里,但是我无法弄清楚这个代码片段中出现了什么问题:

local a = 'f' local p = io.popen( 'echo -~`~-,_,- Editing '..(a == 'f' and 'foreground' or 'background')..' -~`~-,- > con && '.. --display text to the user 'set /pf= Find block: > con < con && '.. --user input 'call echo %f% &&' .. --pass f back to the lua script 'set /pr= Replace with: > con < con && '.. --user input 'call echo %r% &&' .. --pass r back to the lua script 'pause < con',"r") local f = p:read("*a") --read what was passed back,later parse it back into 2 variables p:close()

我期望发生的事情:

向用户显示“命令提示符窗口”,询问input。

用户input2个值。

这些值在input时回显给lua脚本。

这些值从pipe道中读取并存储起来供以后使用。

命令行等待按键,然后closures。

究竟发生了什么:

向用户显示“命令提示符窗口”,询问input。

用户inputf的值。

f被回传给lua脚本。

用户inputr的值。

r回显到控制台。 (!!!)

f从pipe道读取。 r不存在。

命令行等待按键,然后closures。

这个非常相似的代码示例工作得很好,但只返回1个variables:

p = io.popen( 'echo What do you want to do? > con && '.. 'echo G: remove girders > con && '.. 'echo F: swap foreground > con && '.. 'echo B: swap background > con && '.. 'echo U: undo all edits > con && '.. 'echo C: cancel > con && '.. 'set /pa= Choose an option: > con < con && '.. 'call echo %a%',"r") a = string.lower(p:read("*a"):gsub("n","")) p:close()

我做错了什么,我怎么能改写这个为我的目的工作? 我释放了世界上的什么东西,我怎么把灵魔放回瓶子里?

cmd工程,但C: windows System32 cmd.exe不

发送命令以使用/ proc进行处理

在bash中删除长度小于2的单词

这个版本没有指定目标

添加Git到PATHvariables – 在AppData / Local下找不到GitHub

可以运行更新,它的工作原理,但提交说非法仓库url“'?

Bash'printf'相当于命令提示符?

无法通过Ant运行windows命令,但可以在cmd.exe上运行

找出一个二进制文件是否已经被堆栈粉碎保护编译

ps:干净的方式只获得父进程?

经过一段时间的搜索,我发现这一点:

( echo some output echo more output )>"Your logfile

从批处理文件中重定向输出

我不知道你可以封装这样的命令,自从我第一次发现它之后,我一直在修改windows Cli。

local a = 'f' local p = io.popen( 'echo -~`~-,- > con && '.. --display text to the user '( set /pf= Find block: && '.. --user input 'set /pr= Replace with: ) > con < con && '.. --user input 'call echo %f% &&' .. --pass f back to the lua script 'call echo %r% &&' .. --pass r back to the lua script 'pause < con > con',later parse it back into 2 variables p:close()

如上所述包装两个set /p语句的工作 – 我得到f的预期输出,后面跟着一个换行符,然后r ,全部发回到他们所属的lua脚本。

不过,如果任何人都可以为我解释为什么这是一个问题,我会非常感兴趣的解释。

local p = io.popen( -- create temporary .bat-file 'set tmpf="%TEMP%\TMP%rANDOM%.BAT" &&'.. 'cmd /c"(echo @set p=^%1&echo @set /px= ^%p:~1,-1^%^>con&echo @call echo ^%x^%)>%tmpf%" &&'.. -- Your main program 'echo. -~`~-,- > con &&'.. --display text to the user 'call %tmpf% "Find block:" < con &&'.. -- pass f back to the lua script 'call %tmpf% "Replace with:" < con &&'..-- pass r back to the lua script -- delete temporary .bat-file 'call del %tmpf% > con &&'.. 'pause < con',"r") local f = p:read'*a' p:close()

总结

以上是内存溢出为你收集整理的Lua – popen 2x'&&'chained set / p – stdout需要休假全部内容,希望文章能够帮你解决Lua – popen 2x'&&'chained set / p – stdout需要休假所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1247006.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存