找回密码
 加入
搜索
查看: 5871|回复: 17

关于AU3参数路径问题?

[复制链接]
发表于 2008-7-15 12:13:17 | 显示全部楼层 |阅读模式
我用AU3脚本生成一个ss.exe程序,脚本如下:
If $cmdline[0] <> 0 Then
    $filename = $cmdline[1]
     Run($filename,"",@SW_HIDE)
Else   
    MsgBox(64, "注意", '请带参数运行此程序')
EndIf
当我用ss.exe加参数"D:\游戏\梦幻西游\my.exe"时出现路径问题,也就是说这个东西相当于在ss.exe所在位置执行my.exe,而不是在"D:\游戏\梦幻西游\my.exe"执行my.exe.所以导致一些dll无法读取,请问有没有高手懂解决这个问题?

[ 本帖最后由 douyuan 于 2008-7-15 17:28 编辑 ]
发表于 2008-7-15 12:19:00 | 显示全部楼层
Run($filename,"",@SW_HIDE)
这一句中间的“”就是工作路径,你加上“My.exe”的路径看看能行不?
 楼主| 发表于 2008-7-15 12:37:41 | 显示全部楼层

回复 2# 顽固不化 的帖子

这样是可以的,但这样的话程序就固定了,如果我想改成"ss.exe d:\游戏\大话西游\xy2.exe"这个程序就用不了.主要是为了能直接执行参数里的程序.
发表于 2008-7-15 12:43:10 | 显示全部楼层
用CMD运行试试
 楼主| 发表于 2008-7-15 12:44:51 | 显示全部楼层

回复 4# ceoguang 的帖子

难道AU3无法判断运行?
发表于 2008-7-15 12:45:45 | 显示全部楼层
路径的问题,你可以从参数里取呀,my.exe前面的不是路径吗?至于怎么取,你自己研究一下,主要是字符串的处理,这也是个学习的过程。

[ 本帖最后由 顽固不化 于 2008-7-15 12:52 编辑 ]
发表于 2008-7-15 12:55:21 | 显示全部楼层
原帖由 douyuan 于 2008-7-15 12:44 发表
难道AU3无法判断运行?

Run(@ComSpec & " /c " & 'cd /d d:\游戏\大话西游\ &start xy2.exe', "", @SW_HIDE)
 楼主| 发表于 2008-7-15 13:07:32 | 显示全部楼层

回复 7# ceoguang 的帖子

这样也能算咩?现在是要怎么取参数里的字符串,最主要的是如D:\游戏\梦幻西游\my.exe和D:\游戏\大话西游2\xy2.exe的安符串长度不一样的

[ 本帖最后由 douyuan 于 2008-7-15 13:19 编辑 ]
发表于 2008-7-15 13:17:03 | 显示全部楼层
无语,FAQ你没看明白吗?
$cmdline[1]
$cmdline[2]
不就是所对应的参数字符了
 楼主| 发表于 2008-7-15 13:29:57 | 显示全部楼层

回复 9# ceoguang 的帖子

就是不是很明白,在实例中运用不成功才回头问的
发表于 2008-7-15 14:01:11 | 显示全部楼层
原帖由 douyuan 于 2008-7-15 13:29 发表
就是不是很明白,在实例中运用不成功才回头问的

算我服了你
Select
        Case $CMDLINE[0] = 0
                MsgBox(64, "提示", '请带参数运行此程序')
    Case $CMDLINE[0] = 2
                $Folder = $cmdline[1]
                $gamename = $cmdline[2]
                Run($Folder&$gamename,$Folder)
EndSelect
 楼主| 发表于 2008-7-15 14:18:36 | 显示全部楼层
原帖由 ceoguang 于 2008-7-15 14:01 发表

算我服了你
Select
        Case $CMDLINE[0] = 0
                MsgBox(64, "提示", '请带参数运行此程序')
    Case $CMDLINE[0] = 2
                $Folder = $cmdline[1]
                $gamename = $cmdline[2]
                Run($Folder&$gamename,$Folder)
...


好像引用是完全无效果的
发表于 2008-7-15 14:32:13 | 显示全部楼层
参数的第一个是目录名,第二个是游戏名,每个参数间用空格分开.
目录后面必须带\

[ 本帖最后由 ceoguang 于 2008-7-15 14:34 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2008-7-15 14:50:05 | 显示全部楼层
如果参数中包含了路径和文件名,要分离出路径来。看看这个路径有什么规律?
答案是:文件名前面有个“\”。采用StringSplit函数就可以把这个字符串拆成数个小串,这个函数返回值是一个数组,其中数组[0]号中是数组维数-1(即有效子字符串的个数)。有了这些条件就可可得到路径。做法就是去掉数组的最后一维(即文件名),剩下的各维按原来顺序与到一起就是路径。
如果:
$CMDline[1]="d:\游戏\大话西游\xy2.exe"
那么:
$A=StringSplit($CMDline[1],"\")
后:
$A[0]=4
$A[1]="d:"
$A[2]="游戏"
$A[3]="大话西游"
$A[4]="xy2.exe"
然后用一个for循环,将前3各与起来(其中,两两中间加上“\”)就是路径了。关于如何for循环不用我说了吧?

[ 本帖最后由 顽固不化 于 2008-7-15 15:31 编辑 ]
发表于 2008-7-15 15:09:00 | 显示全部楼层
回14#
$A[0]的值该如何获得呢?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-27 11:53 , Processed in 0.082489 second(s), 20 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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