关于AU3参数路径问题?
我用AU3脚本生成一个ss.exe程序,脚本如下:If $cmdline <> 0 Then
$filename = $cmdline
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 编辑 ] Run($filename,"",@SW_HIDE)
这一句中间的“”就是工作路径,你加上“My.exe”的路径看看能行不?
回复 2# 顽固不化 的帖子
这样是可以的,但这样的话程序就固定了,如果我想改成"ss.exe d:\游戏\大话西游\xy2.exe"这个程序就用不了.主要是为了能直接执行参数里的程序. 用CMD运行试试回复 4# ceoguang 的帖子
难道AU3无法判断运行? 路径的问题,你可以从参数里取呀,my.exe前面的不是路径吗?至于怎么取,你自己研究一下,主要是字符串的处理,这也是个学习的过程。[ 本帖最后由 顽固不化 于 2008-7-15 12:52 编辑 ] 原帖由 douyuan 于 2008-7-15 12:44 发表 http://www.autoitx.com/images/common/back.gif
难道AU3无法判断运行?
是
Run(@ComSpec & " /c " & 'cd /d d:\游戏\大话西游\ &start xy2.exe', "", @SW_HIDE)
回复 7# ceoguang 的帖子
这样也能算咩?现在是要怎么取参数里的字符串,最主要的是如D:\游戏\梦幻西游\my.exe和D:\游戏\大话西游2\xy2.exe的安符串长度不一样的[ 本帖最后由 douyuan 于 2008-7-15 13:19 编辑 ] 无语,FAQ你没看明白吗?
$cmdline
$cmdline
不就是所对应的参数字符了
回复 9# ceoguang 的帖子
就是不是很明白,在实例中运用不成功才回头问的 原帖由 douyuan 于 2008-7-15 13:29 发表 http://www.autoitx.com/images/common/back.gif就是不是很明白,在实例中运用不成功才回头问的
算我服了你
Select
Case $CMDLINE = 0
MsgBox(64, "提示", '请带参数运行此程序')
Case $CMDLINE = 2
$Folder = $cmdline
$gamename = $cmdline
Run($Folder&$gamename,$Folder)
EndSelect
原帖由 ceoguang 于 2008-7-15 14:01 发表 http://www.autoitx.com/images/common/back.gif
算我服了你
Select
Case $CMDLINE = 0
MsgBox(64, "提示", '请带参数运行此程序')
Case $CMDLINE = 2
$Folder = $cmdline
$gamename = $cmdline
Run($Folder&$gamename,$Folder)
...
好像引用是完全无效果的 参数的第一个是目录名,第二个是游戏名,每个参数间用空格分开.
目录后面必须带\
[ 本帖最后由 ceoguang 于 2008-7-15 14:34 编辑 ] 如果参数中包含了路径和文件名,要分离出路径来。看看这个路径有什么规律?
答案是:文件名前面有个“\”。采用StringSplit函数就可以把这个字符串拆成数个小串,这个函数返回值是一个数组,其中数组号中是数组维数-1(即有效子字符串的个数)。有了这些条件就可可得到路径。做法就是去掉数组的最后一维(即文件名),剩下的各维按原来顺序与到一起就是路径。
如果:
$CMDline="d:\游戏\大话西游\xy2.exe"
那么:
$A=StringSplit($CMDline,"\")
后:
$A=4
$A="d:"
$A="游戏"
$A="大话西游"
$A="xy2.exe"
然后用一个for循环,将前3各与起来(其中,两两中间加上“\”)就是路径了。关于如何for循环不用我说了吧?
[ 本帖最后由 顽固不化 于 2008-7-15 15:31 编辑 ] 回14#
$A的值该如何获得呢?
页:
[1]
2