浅绿 发表于 2008-5-11 23:07:57

FAQ 里的关于加参数运行的问题!

http://www.autoitx.com/forum.php?mod=viewthread&tid=487&extra=page%3D2
看了这个贴子的Gooker的回答:
$CmdLine 保存着命令行中参数的个数(不包括脚本文件名)
$CmdLine 是第 1 个参数
$CmdLine 则是第 2 个参数

如果只有/a 的话 $CmdLine =1 $CmdLine =/a

看到FAQ里3hen弄的一个参数的例子.
如果放多个参数,
If $cmdline <> 0 Then
    $1 = $cmdline
   MsgBox(4096, "测试", '你输入的命令行参数是 "' & $1 & '"')
             $2 = $cmdline
   MsgBox(4096, "测试", '你输入的命令行参数是 "' & $2 & '"')
             $3 = $cmdline
   MsgBox(4096, "测试", '你输入的命令行参数是 "' & $3 & '"')
Else   
    MsgBox(64, "测试", '请带参数运行此程序')
EndIf
试过,好像可以,只是弹出MSGBOX之后,点确定会出来一个错误:Line -1 错误的数组或数组超出界限

怎么回事?

[ 本帖最后由 浅绿 于 2008-5-14 16:40 编辑 ]

gooker 发表于 2008-5-11 23:12:03

不要编译,在编辑器里面按F5看错误信息

浅绿 发表于 2008-5-11 23:23:19

不要编译,在编辑器里面按F5看错误信息

不编译的话看不到错误..按F5就弹出Msgbox了,MsgBox(64, "测试", '请带参数运行此程序')

:face (9):

sanhen 发表于 2008-5-11 23:26:06

FAQ的写法不是这样的。你的写法本身有误。。。


$2 = $cmdline本身没有,当然出错了。。。


多个未知参数应该这样用的了。


For $i = 1 To $CmdLine

gooker 发表于 2008-5-11 23:30:42

这样看代码的效果真不好看
:face (7):

浅绿 发表于 2008-5-11 23:47:30

直接复制过去不好用.
For $i = 1 To $CmdLine
next
提示跟原来一样,还是那个 -1的错误..

看完火影睡觉啦..明天过来看答案.:face (22):

漠北雪~狼 发表于 2008-5-12 00:29:17

If $CmdLine > 0 Then
        For $I = 1 to $CmdLine
                MsgBox(0,$I,$CmdLine[$I])
        Next
EndIf

这样不行么?我试了很多次 很多种参数的情况下都可以.

浅绿 发表于 2008-5-12 11:47:07

咋试的?
我试的MSG到是正常。
参数1=Run("扫雷.exe")
参数2=Run("扫雷.exe")
用For next,不管加什么参数都是运行:扫雷.exe 加100也运行 扫雷.exe

有没有完整的例子给个看看,比如 加:/sl 运行扫雷,加:/jp 运行纸牌

漠北雪~狼 发表于 2008-5-12 12:09:44

反正我是不管怎么试都可以。。。。。。。。。


If $CmdLine > 0 Then
    For $I = 1 to $CmdLine
      MsgBox(0,$I,$CmdLine[$I])
      If $I = 1 Then
            Switch $Cmdline[$I]
                                Case "ping"
                         Run("ping 127.0.0.1")
                Case "calc"
                     Run("Calc")
                  EndSwitch
      ElseIf $I = 2 Then
            Switch $Cmdline[$I]
                                Case "ex"
                         Run("explorer")
                Case "dx"
                     Run("dxdiag")
                  EndSwitch
      EndIf
    Next
EndIf

浅绿 发表于 2008-5-14 16:41:57

贴子改成已解决了,好像还是不明白。。不知道是不是版本的问题。。提示什么编码U什么的。。



谁会。。再教一下。。:face (22):

yingftf 发表于 2009-3-24 14:22:37

我也遇到这种情况 好像是多余的 但是解决了出错

Dim $iMsgBoxAnswer,$i1,$i2,$i3,$i4,$i5



If $CmdLine > 0 Then
    For $I = 1 to $CmdLine
      If $I = 1 Then
                          $i1 = $Cmdline[$I]
                       
      ElseIf $I = 2 Then
            $i2= $Cmdline[$I]
                          
                ElseIf $I = 3 Then
            $i3= $Cmdline[$I]
                          
                ElseIf $I = 4 Then
            $i4= $Cmdline[$I]
                          
                ElseIf $I = 5 Then
            $i5= $Cmdline[$I]
                               
      EndIf
    Next



Switch $Cmdline
                                Case "-jiami"
                         if        $i2 = "" Then
                                                _jiami("","","0",@ScriptDir)
                                        Else
                                                _jiami("","","1",$i2 & "\")
                                        EndIf
                Case "-shanchu"
                     if        $i2 = "" Then
                                               _shanchu(@ScriptDir)
                                       Else
                                               _shanchu($i2 & "\")
                                       EndIf
                                Case "-dakai"
                     if        $i2 = "" Then
                                               _start("1",@ScriptDir)
                                        Else
                                               _jiami("","","0",$i2 & "\")
                                       EndIf

                                Case "-s"
                  
                                               _reg()
                                       
EndSwitch




Endif
页: [1]
查看完整版本: FAQ 里的关于加参数运行的问题!