wmt333 发表于 2010-5-12 23:15:24

如何读取用批处理设置的非系统变量?

经常要用到批处理设置一些自定义的变量,怎么在AU3中读使用这些变量呢?而用EnvGet ( "环境变量" )只能显示系统环境变量,还有其它函数吗?

netegg 发表于 2010-5-12 23:21:54

楼主要干什么,au3读取bat变量?是值还是名?

wmt333 发表于 2010-5-13 21:41:55

因为从事主板测试工作,工作中通常使用批处理来将各个程序串起来,而有些功能是批处理不容易实现的,所以要借助其它的脚本。由于AU3上手相对容易些,所以选择了它,但在使用中遇到了一些问题。比如在调用批处理时,一开始设置机台号和员工号等信息set station_id=1Aset operatorid=F2720532,中间我想实现某个功能,用AU3脚本写一个小程序,其中需要用到station_id以及operatorid这些变量,怎么才能获取这些批处理定义的变量呢?

netegg 发表于 2010-5-14 00:33:52

station_id以及operatorid是否参与操作,还是只用来确定操作的机器和与员工号?

wmt333 发表于 2010-5-14 20:42:35

我该怎么表达呢?
如果我在1.bat中设置了变量set station_id=1Aset operatorid=F2720532,假如我在后面的程式中要用au3写一个程式(用批处理不易实现),假定是对某个文件1.txt进行操作,需要将机台号和员工工号加进去(这个功能当然用批处理容易实现: echo station_id=%station_id%>>1.txt),但如果要用au3来实现应该怎么做呢?
不知道我这样的表达大家是否看得懂?

C.L 发表于 2010-5-15 00:32:19

两文件放在同目录下可测试

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

C.L 发表于 2010-5-15 00:34:40

至于你自已的bat不同,输出流的内容可能会有不同,对变量$line进行自行处理

wmt333 发表于 2010-5-16 20:53:45

多谢C.L,不过这样执行的结果是1A=F2720532,并不是我期望的那样。如果比较麻烦还不如先用批处理生成一个配置文件config.ini,在里面用批处理设置好信息,然后在au3时用iniread读取好了。

My2009 发表于 2010-7-8 13:25:16

wmt333是搞主板测试方案这块的?有机会交流一下,我也是!我的邮箱kjtest@live.cn
页: [1]
查看完整版本: 如何读取用批处理设置的非系统变量?