bbip 发表于 2009-6-26 22:42:54

关于命令行参数的问题

本帖最后由 bbip 于 2009-6-26 22:45 编辑

为了工作需要,我想写个自动安装万象客户端的程序,用$CmdLine[]来传递参数 比如 用什么协议,服务端IP地址多少,这些都实现了 但是我还想能同时设置好系统自动登录的用户名和密码,这样就需要用到4个参数好像AU3默认只支持2个参数,请问有什么方法可以实现4个参数的传递吗??谢谢   
附代码如下$title="安装 - 万象网管客户端"
FileInstall("220.exe",@TempDir&"/220.exe")
;$cmdline   为安装协议
;$cmdlne    为服务端IP
        if $cmdline="/ipx" Then
                Run(@TempDir&"/220.exe")
                WinWaitActive($title,"推荐您在继续安装前关闭所有其它应用程序")
                ControlClick($title,"推荐您在继续安装前关闭所有其它应用程序","TNewButton1")
       
                WinWaitActive($title,"许可协议")
                ControlClick($title,"许可协议","TNewRadioButton1")
                ControlClick($title,"许可协议","TNewButton2")
       
                WinWaitActive($title,"选择安装产品类型")
                ControlClick($title,"选择安装产品类型","TNewButton2")
       
                WinWaitActive($title,"选择协议类型")
                Send("{UP}")
                WinActivate("安装","您目前使用的是广播协议(IPX)")
                ControlClick("安装","您目前使用的是广播协议(IPX)","Button2")
                WinWaitActive($title,"选择协议类型")
                ControlClick($title,"选择协议类型","TNewButton2")
                WinWaitActive($title,"准备安装")
                ControlClick($title,"准备安装","TNewButton2")
               
                WinWaitActive($title,"万象网管客户端 安装向导完成")
                ControlClick($title,"万象网管客户端 安装向导完成","TNewButton2")
        Exit
       
        ElseIf $cmdline="/udp" And $cmdline="2" Then
                                Run(@TempDir&"/220.exe")
                WinWaitActive($title,"推荐您在继续安装前关闭所有其它应用程序")
                ControlClick($title,"推荐您在继续安装前关闭所有其它应用程序","TNewButton1")
       
                WinWaitActive($title,"许可协议")
                ControlClick($title,"许可协议","TNewRadioButton1")
                ControlClick($title,"许可协议","TNewButton2")
       
                WinWaitActive($title,"选择安装产品类型")
                ControlClick($title,"选择安装产品类型","TNewButton2")
       
                WinWaitActive($title,"选择协议类型")
                Send("{DOWN}")
                WinActivate("安装","您目前使用的是广播协议(UDP)")
                ControlClick("安装","您目前使用的是广播协议(UDP)","Button2")
                WinWaitActive($title,"选择协议类型")
                ControlSetText($title,"选择协议类型","TEdit1",$cmdline)
                ControlClick($title,"选择协议类型","TNewButton2")
                WinWaitActive($title,"准备安装")
                ControlClick($title,"准备安装","TNewButton2")
               
                WinWaitActive($title,"万象网管客户端 安装向导完成")
                ControlClick($title,"万象网管客户端 安装向导完成","TNewButton2")
               
                Exit
               
        ElseIF $cmdline="/tcp" And $cmdline="2" Then


                                        Run(@TempDir&"/220.exe")
                WinWaitActive($title,"推荐您在继续安装前关闭所有其它应用程序")
                ControlClick($title,"推荐您在继续安装前关闭所有其它应用程序","TNewButton1")
       
                WinWaitActive($title,"许可协议")
                ControlClick($title,"许可协议","TNewRadioButton1")
                ControlClick($title,"许可协议","TNewButton2")
       
                WinWaitActive($title,"选择安装产品类型")
                ControlClick($title,"选择安装产品类型","TNewButton2")
       
                WinWaitActive($title,"选择协议类型")
;                Send("{DOWN}")
;                WinActivate("安装","您目前使用的是广播协议(UDP)")
;                ControlClick("安装","您目前使用的是广播协议(UDP)","Button2")
                WinWaitActive($title,"选择协议类型")
                ControlSetText($title,"选择协议类型","TEdit1",$cmdline)
                ControlClick($title,"选择协议类型","TNewButton2")
                WinWaitActive($title,"准备安装")
                ControlClick($title,"准备安装","TNewButton2")
               
                WinWaitActive($title,"万象网管客户端 安装向导完成")
                ControlClick($title,"万象网管客户端 安装向导完成","TNewButton2")
               
                Exit

        else
        MsgBox(0,"提示","参数不正确。请重新设置!")

        EndIf

l4ever 发表于 2009-6-26 22:46:52

本帖最后由 l4ever 于 2009-6-26 22:51 编辑

把四个参数写在一起,中间加个符号分割.
例如cmdline传递的是:1=2=3=4
然后用StringSplit 分开.
$cmd = StringSplit($cmdline,"=")

这样的话$cmd就是参数的数量,$cmd就是第一个参数....以此类推

加上检测比较好,不然会出现不是数组

if $cmd <> "4" then
.......传递参数错了!!
end if

bbip 发表于 2009-6-27 16:22:39

还可以这样啊~~ 我试一下,谢谢楼上的
页: [1]
查看完整版本: 关于命令行参数的问题