wingking84 发表于 2012-6-13 22:22:57

EXE读取变量

本帖最后由 wingking84 于 2012-6-14 09:23 编辑

a.exe 要启用其它程序,分发给其它PC使用,每个PC上的程序路径不一样。
目前有2种思路:
1在a.au3中#include "ini.au3"
ini.au3中直接定义变量$dir = "c:\a\b"
编译后,读取不到ini.au3中重新设置的变量值。

2.读取ini.
ini中设置dir = c:\a\b
但ini中有多个变量,如
dir1 = aa
dir2 = bb
dir3 = cc
len1 = 10
len2 = 20
IniReadSection (var[$i] =key , var[$i] = value) + IF 可实现,但编码有点复杂,不灵活。
想用eval($var[$i]) = $var[$i])却实现不了。

求各位指点。或者其它思路。

hzxymkb 发表于 2012-6-13 22:49:37

你第一种方法我第一次见到!有创意!

afan 发表于 2012-6-13 23:14:58

要启动的程序有注册表信息没?有就直接读取路径。没有就手动指定一次,保存到注册表或Ini。

user3000 发表于 2012-6-14 08:52:59

没事做: 可以进行全盘搜索该执行程序的.
有事做:也可以这样:#include <array.au3>
Local $dirs = ['c:\1', 'd:\2', 'e:\3', 'c:\4', 'd:\33']
Local $sequence = Number(StringRegExpReplace(@ComputerName, '\D', ''))
If $sequence < UBound($dirs) Then
        MsgBox(0, '第 ' & $sequence & ' 台机器', '路径: ' & @TAB & $dirs[$sequence])
Else
        MsgBox(16, '第 ' & $sequence & ' 台机器', '此机器未设置好程序路径! ')
EndIf

wingking84 发表于 2012-6-14 09:21:03

回复 3# afan

有的程序有注册表,有的没有。
a.exe每次启动要读取这些变量值,关键还是读取后给一个变量赋值。

wingking84 发表于 2012-6-14 09:27:27

回复 4# user3000

关键是程序要和变量在不同文件。

afan 发表于 2012-6-14 09:35:45

回复 5# wingking84


    如果你的 PC 名有序号,可以研究下 user3000 的代码。
也可以如下,可应对非规律 PC 名,如“abc、kkk、sd2”
x.ini 文件大致如下

abc = xx\xx
kkk = xx\xxx
sd2 = x\x
...

$sDir = IniRead('x.ini', 'dd', @ComputerName, '')

超级死人 发表于 2012-6-14 11:06:59

笨人有笨办法.就是在ini里面修改
[机器名1]
run=程序路径
[机器名2]
run=程序路径

然后程序里只要写 IniRead('x.ini',@ComputerName, "run")
页: [1]
查看完整版本: EXE读取变量