找回密码
 加入
搜索
查看: 3708|回复: 7

[AU3基础] 【已解决】如何将cmd回显值返回给AU3变量

  [复制链接]
发表于 2016-11-23 09:18:40 | 显示全部楼层 |阅读模式
本帖最后由 zhanlin1993 于 2016-11-23 12:40 编辑

新手提问。。
希望将“wmic bios get serialnumeber”此命令发送到“cmd”,在将回显值赋给AU3的变量。
小弟做了两种方法,有些疑问,请大神指教。

1)将回显值输出到txt文档,再用FileReadLine,源码如下:
Local $sVarSerialNumber
RunWait(@ComSpec & " /c " & "wmic bios get serialnumber >temp.txt","",@SW_HIDE,15)
$sVarSerialNumber = FileReadLine("temp.txt",2)
FileDelete("temp.txt")
但是个人认为需要额外借用文本文件来获取变量值,有点绕。

2)后来在论坛上看到有用StdoutRead来实现,自己照着样子写了类似的,源码如下:
Local $sVarSerialNumber
Local $run=Run(@ComSpec & " /c " & "wmic bios get serialnumber /value","",@SW_HIDE,15)
ProcessWaitClose($run)
$sVarSerialNumber=StringTrimLeft(StringStripCR(StdoutRead($run)),15)
此源码也可以正常得出准确的主板序列号。但是对于字符串处理的那一段有些疑问:
"wmic bios get serialnumber /value"得出的回显信息格式是:


SerialNumber=XXXXXXX
所以就用了StringStrip去掉回车,再用StringTrimLeft去掉左边的指定长度的字符最后得出要的字符。
“SerialNumber=”这个长度应该是13的,为什么用13得到的是“r=XXXXXXX”,15才是正确的呢?



PS:以上是小弟能想到的获取回显的方法了,还有更好的方法吗?
发表于 2016-11-23 10:38:11 | 显示全部楼层
$iPID = Run(@ComSpec & ' /c ' & 'wmic bios get serialnumber /value', '', @SW_HIDE, 8)
ProcessWaitClose($iPID)

$aArray = StringRegExp(StdoutRead($iPID), '(?<==)\w+', 3)
MsgBox(0, 0, $aArray[0])
 楼主| 发表于 2016-11-23 11:48:13 | 显示全部楼层
回复 2# 水木子
$aArray = StringRegExp(StdoutRead($iPID), '(?<==)\w+', 3)
表达式的内容有些疑问,"?<=="的作用就是匹配“=”以后的字符,为什么还要再加“\w+”呢?

还有,将您的代码贴在源码里,貌似获取不到“=”以后的字符哦。
发表于 2016-11-23 11:51:02 | 显示全部楼层
本帖最后由 水木子 于 2016-11-23 11:56 编辑

(?<==)\w+
这个表达式怎么理解呢!我觉得应该是匹配的内容前面有个“=”号(得到的结果中不包含这个“=”号)
而我们需要得到的内容是\w+(一串字母+数字的组合)。
因为“=”号后面不光只有这串字符,还有其他的内容,比如空白符,回车符,换行符,只是我们没有看见而已,所以需要排除它们。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2016-11-23 12:09:24 | 显示全部楼层
回复 4# 水木子

soga。

/w+起到清除非字母,数字,下划线的作用。

谢谢解答啦~
发表于 2016-11-23 20:16:12 | 显示全部楼层
高手就是高手
发表于 2018-4-18 16:50:18 | 显示全部楼层
这个正好用到,之前都是只会写到文本里再读取……
发表于 2018-8-8 16:52:36 | 显示全部楼层
回显不错,我现在想怎么把命令发到dos里面去?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-24 01:05 , Processed in 0.092729 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表