找回密码
 加入
搜索
查看: 3851|回复: 8

[AU3基础] 【已解决】关于参数 $cmdline 求助

  [复制链接]
发表于 2012-3-31 23:11:37 | 显示全部楼层 |阅读模式
本帖最后由 Allreal 于 2012-4-1 09:20 编辑

$b = $CmdLine[1]&@YEAR & @MON & @MDAY &Chr(Random(Asc("A"), Asc("Z")))
$_Return=DllCall("Kernel32.dll","int","SetComputerNameEx","int",5,"str",$b)

这是我在论坛搜索,并拼凑出来的修改计算机名的脚本。
我想实现 运行 这个脚本编译的程序 pcrn.exe APC-  就得到 APC-20120331T 的输出结果.
实际运行的时候, 加参数运行时可以的.
但是如果直接运行,会出错....怎么办.
找了一下....论坛并没有$CMDLINE的实例,或者是我看不懂.....

评分

参与人数 1金钱 +15 收起 理由
afan + 15 感谢主动将修改帖子分类为[已解决],请继续 ...

查看全部评分

发表于 2012-3-31 23:41:05 | 显示全部楼层
发表于 2012-3-31 23:54:51 | 显示全部楼层
看看$CmdLine[0] 的值 做个条件判断

帮助   使用AutoIt   命令行参数


命令行参数
当我们传递命令行参数到AutoIt脚本中的时候,AutoIt会初始化一个特殊的数组 $CmdLine.   注意, 脚本文件名不算进参数; 请使用 @ScriptName 代替脚本名称.  一个参数中如果含有空格,必须使用 "双引号"把内容围住.  已编译的 脚本同样也能接受命令行参数. 请看下面代码:

$CmdLine[0] ;参数的数量
$CmdLine[1] ;第一个参数 (脚本名称后面)
$CmdLine[2] ;第二个参数等等
...
$CmdLine[$CmdLine[0]] ;可以用来表示得到最后一个参数...



如果您的脚本是像下面这样被运行的话:

    AutoIt3.exe myscript.au3 参数1 "这是 一个其它参数"

$CmdLine[0] 等价于... 2
$CmdLine[1] 等价于... 参数1
$CmdLine[2] 等价于... 这是一个其它参数

@ScriptName 等价于... myscript.au3



除开 $CmdLine 之外还有一个变量叫做 $CmdLineRaw ,它保存着完整的未被拆分的命令行语句, 对于上面这个例子:

$CmdLineRaw 等价于... myscript.au3 参数1 "这是一个其它参数"



如果脚本已经被编译,那么得到的值将会是下面这个样子:

    myscript.exe 参数1 "这是 一个其它参数"

$CmdLineRaw 等价于... 参数1 "这是一个其它参数"

注意 $CmdLineRaw 会立即返回参数.



注意 : 只有 63 个参数会被 $CmdLine[...] 正常返回, 但是 $CmdLineRaw 总是会返回完整的所有参数.
 楼主| 发表于 2012-3-31 23:59:55 | 显示全部楼层
谢谢楼上两位的热心、应该是我水平太差了。。。。还是不懂。。。。抱歉,呵呵。能不能说直接一点。。。。
发表于 2012-4-1 00:12:40 | 显示全部楼层

$timestr = @YEAR & @MON & @MDAY &Chr(Random(Asc("A"), Asc("Z")))
$usage = "        参数错误!"&@CRLF&"    用法: pcrn.exe APC-  或  pcrn.exe"
$err = "错误"
Select
        Case $CmdLine[0] = 0
                $b = "APC-" & $timestr
        Case $CmdLine[0] = 1
                If $CmdLine[$CmdLine[0]] = "APC-" Then
                        $b = $CmdLine[1] & $timestr
                Else
                        $b = $err
                        ConsoleWrite($usage)
                EndIf
        Case Else
                $b = $err
                ConsoleWrite($usage)
EndSelect
MsgBox(0, "", $b)
;$_Return=DllCall("Kernel32.dll","int","SetComputerNameEx","int",5,"str",$b)

评分

参与人数 1金钱 +20 收起 理由
afan + 20

查看全部评分

 楼主| 发表于 2012-4-1 08:57:01 | 显示全部楼层
再次感谢veket_linux ,可能我的表达有误,我是想编译出的程序pcrn.exe 不加参数运行的时候不出错。
apc是一个可以自由更改的参数。
  我再学习学习吧。实在是不好意思再麻烦你了。  :)
 楼主| 发表于 2012-4-1 09:10:36 | 显示全部楼层
太感谢 veket_linux  了,原来你写的就是我想的意思。  呵呵,
因为水平问题没看懂。
     谢谢,敬礼 呵呵。
发表于 2013-6-14 21:35:54 | 显示全部楼层
学习了,
发表于 2017-4-29 21:53:28 | 显示全部楼层
做个标记,感谢分享
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-25 20:09 , Processed in 0.088841 second(s), 28 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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