vgy0dl 发表于 2012-3-22 01:05:17

非数组变量使用下标,,已解决

本帖最后由 vgy0dl 于 2012-3-22 01:29 编辑

Run(@ComSpec & " /C ipconfig >c:\windows\temp.txt",'',@SW_HIDE)
$txt="c:\windows\temp.txt"
FileOpen($txt,1)
$word=FileRead($txt)
$array=StringRegExp($word,'Default Gateway . . . . . . . . . : \h*([^\r]+)',1)
$a=$array)]
IniWrite(@TempDir&'\ipmac.ini','gateway','gateway',$a)
MsgBox(0,'',$a)

XP下运行没问题,2003下运行就提示了非数组变量使用下标
请教下大虾。。。。帮我看看

vgy0dl 发表于 2012-3-22 01:28:32

Global $array
Run(@ComSpec & " /C ipconfig >c:\windows\temp.txt",@ScriptDir,@SW_HIDE)
$txt="c:\windows\temp.txt"
FileOpen($txt,1)
$word=FileRead($txt)
$array=StringRegExp($word,'Default Gateway . . . . . . . . . : \h*([^\r]+)',1)
$a=$array)]
IniWrite(@TempDir&'\ipmac.ini','gateway','gateway',$a)
MsgBox(0,'',$a)

Ycxw2008 发表于 2012-3-22 04:20:23

本帖最后由 Ycxw2008 于 2012-3-22 04:47 编辑

大概看了下可能因为系统区别,
所以导致还没运行完cmd就执行到fileread那一步了
;这个时候你的读取的文件还没有包含下面你想要匹配的
;所以把run改成
RunWait(@ComSpec & " /C ipconfig >c:\windows\temp.txt",'',@SW_HIDE)
然后直接这样就行了;
Local $Array=StringRegExp(FIleRead("c:\windows\temp.txt"),"Default Gateway . . . . . . . . . : \h*([^\r]+)",3)
这里的正则可以改成(?<=Default Gateway (?:.\s){9}:)([^\r\n]+)
最好再加个判断,
If @Error Then MsgBox(0,"","没匹配到")

vgy0dl 发表于 2012-3-22 11:45:36

回复 3# Ycxw2008


    谢谢你哈。。。。

hollandmfq 发表于 2014-5-13 11:52:43

雷锋精神传天下!谢谢分享!
页: [1]
查看完整版本: 非数组变量使用下标,,已解决