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

如何让配置文件支持这些命令

[复制链接]
发表于 2009-7-16 10:40:00 | 显示全部楼层 |阅读模式
我的配置文件:
[run]
1=$windri$\a.exe


为什么AU3 runwait 运行不了,而换成c:\windows\a.exe  却能正常运行了,请问是不是要定义$windir$等命令,那如何定义?
发表于 2009-7-16 11:04:37 | 显示全部楼层
$windri$\a.exe 在被读取时,会被看成是一个字符串,你如果没有$windri$这个目录,目录下也没有a.exe那就自然出错了
 楼主| 发表于 2009-7-16 12:02:27 | 显示全部楼层
2# liongodmien


那如何定义$windir$ 不被当成目录而是一个命令? 也就是$windir$=x:\windows
发表于 2009-7-24 19:42:10 | 显示全部楼层
本帖最后由 sanmoking 于 2009-7-24 20:40 编辑

晕倒,我明明发了一个帖子,编辑了一下,就变成了俩。。。楼主看楼下吧。一样的内容。

评分

参与人数 1金钱 +10 贡献 +2 收起 理由
lynfr8 + 10 + 2 原创内容,感谢你对论坛的支持;希望继续发 ...

查看全部评分

发表于 2009-7-24 19:43:39 | 显示全部楼层
本帖最后由 sanmoking 于 2009-7-24 20:29 编辑

你可以在你的程序里面把一些特定字符串转换成当前系统变量。当然这个只是个建议,还有个参考:
传送门:那个所谓的最牛逼的QQdll抓图工具的源码
这个里面关于程序启动参数的设定部分由可借鉴之处,楼主只需要研究里面识别特定字符后自动转换的部分。
下面给楼主一个参考方向:
可以使用
[run]
1=!@WindowsDir!\a.exe


然后在你的程序中专门花心思写一个自定义函数来解析两个!!之间的部分:
当读取到得字符串中有两个!存在并且字符串的第一个字符就是!的话(使用$ooo=StringSplit($zifuchuan,"!"),用$ooo[0]=3和$ooo[1]=""来嵌套验证),启动这个解析函数,在这个函数里面进行一些常见的系统目录宏的识别,
1.分割字符串为!之间的部分$a和之后的部分$b(这个能做到吧)
2.识别$a部分,例如
if $a = "@WindowsDir" then
$i=@WindowsDir
elseif $a = "@ProgramFilesDir" then
$i=@ProgramFilesDir
……
else
msgbox(1,"出错了"."路径设置错误。") ;当然你也可以用别的语句代替
$i = 1
endif
3.合并分析后的路径,简单了,$lujing = $i & $b,当然
if $i = 1 then
$lujing = @DesktopDir
else
$lujing = $i & $b
;这个位置可以增加一句分析$lujing是否存在的代码,不存在的话,要么创建要么$lujing = @DesktopDir
endif
当然@DesktopDir你可以设置成自己需要的啦。



上述有点乱,不知道能否帮助楼主。
发表于 2009-7-24 19:50:46 | 显示全部楼层
本帖最后由 sanmoking 于 2009-7-24 20:43 编辑

当然楼主要执意使用系统$windri$这样的自带变量,那楼上的原理通用,不过在windows系统中文件夹的名字是可以包含“$”这个符号的(所以是有可能出错的),但是不能包含“!”,所以建议楼书采纳楼上的方法。
……
……
……
……
然后在你的程序中专门花心思写一个自定义函数来解析两个$之间的部分:
当读取到得字符串中有$存在的话,启动这个解析函数,在这个函数里面进行一些常见的系统目录宏的识别,
1.分割字符串为$之间的部分$a和之后的部分$b(这个能做到吧)
2.识别$a部分,例如
if $a = "WinDir" then
$i=@WindowsDir
elseif $a = "TEMP" then
$i=@tempdir
……
else
msgbox(1,"出错了"."路径设置错误。") ;当然你也可以用别的语句代替
$i = 1
endif
3.合并分析后的路径,简单了,$lujing = $i & $b,当然
if $i = 1 then
$lujing = @DesktopDir
else
$lujing = $i & $b
;这个位置可以增加一句分析$lujing是否存在的代码,不存在的话,要么创建要么$lujing = @DesktopDir
endif
……
……
……
……
发表于 2009-7-24 20:48:46 | 显示全部楼层
本帖最后由 sanmoking 于 2009-7-24 20:50 编辑

另外补充一下,所有有关这种读取路径的程序,如果要创建文件或文件夹,都必须增加一句检验路径中是否有windows系统不允许出现的字符:
$lujing=StringRegExpReplace($lujing, '[\\\/\?\*\|\"\<\>]', "_")
高手不要笑我。我一直这样搞的。
发表于 2009-7-24 22:03:50 | 显示全部楼层
7# sanmoking

只要能解决问题,方法是可以灵活应用的
赞楼上一句
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-26 23:28 , Processed in 0.077614 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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