如何读取用批处理设置的非系统变量?
经常要用到批处理设置一些自定义的变量,怎么在AU3中读使用这些变量呢?而用EnvGet ( "环境变量" )只能显示系统环境变量,还有其它函数吗? 楼主要干什么,au3读取bat变量?是值还是名? 因为从事主板测试工作,工作中通常使用批处理来将各个程序串起来,而有些功能是批处理不容易实现的,所以要借助其它的脚本。由于AU3上手相对容易些,所以选择了它,但在使用中遇到了一些问题。比如在调用批处理时,一开始设置机台号和员工号等信息set station_id=1Aset operatorid=F2720532,中间我想实现某个功能,用AU3脚本写一个小程序,其中需要用到station_id以及operatorid这些变量,怎么才能获取这些批处理定义的变量呢? station_id以及operatorid是否参与操作,还是只用来确定操作的机器和与员工号? 我该怎么表达呢?如果我在1.bat中设置了变量set station_id=1Aset operatorid=F2720532,假如我在后面的程式中要用au3写一个程式(用批处理不易实现),假定是对某个文件1.txt进行操作,需要将机台号和员工工号加进去(这个功能当然用批处理容易实现: echo station_id=%station_id%>>1.txt),但如果要用au3来实现应该怎么做呢?
不知道我这样的表达大家是否看得懂? 两文件放在同目录下可测试
1.bat内容:
@echo off
set station_id=1A
set operatorid=F2720532
echo %station_id%
echo %operatorid%
test.au3:
$val = StringSplit (getval (),"||",1)
If FileExists ("1.txt") Then FileDelete ("1.txt")
FileWriteLine("1.txt",$val&"="&$val)
ShellExecute ("1.txt")
Func getval ()
Local $foo,$line,$temp=""
$foo = Run('1.bat', '', @SW_HIDE,0x2)
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
If $line <> "" Then
$line = StringRegExpReplace ($line,"\s","|")
$temp &= $line
EndIf
WEnd
Return $temp
EndFunc
至于你自已的bat不同,输出流的内容可能会有不同,对变量$line进行自行处理 多谢C.L,不过这样执行的结果是1A=F2720532,并不是我期望的那样。如果比较麻烦还不如先用批处理生成一个配置文件config.ini,在里面用批处理设置好信息,然后在au3时用iniread读取好了。 wmt333是搞主板测试方案这块的?有机会交流一下,我也是!我的邮箱kjtest@live.cn
页:
[1]