【已解决】关于参数 $cmdline 求助
本帖最后由 Allreal 于 2012-4-1 09:20 编辑$b = $CmdLine&@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的实例,或者是我看不懂..... http://www.autoitx.com/forum.php?mod=viewthread&tid=13269&highlight=cmdline 看看$CmdLine 的值 做个条件判断
帮助 使用AutoIt 命令行参数
命令行参数
当我们传递命令行参数到AutoIt脚本中的时候,AutoIt会初始化一个特殊的数组 $CmdLine. 注意, 脚本文件名不算进参数; 请使用 @ScriptName 代替脚本名称.一个参数中如果含有空格,必须使用 "双引号"把内容围住.已编译的 脚本同样也能接受命令行参数. 请看下面代码:
$CmdLine ;参数的数量
$CmdLine ;第一个参数 (脚本名称后面)
$CmdLine ;第二个参数等等
...
$CmdLine[$CmdLine] ;可以用来表示得到最后一个参数...
如果您的脚本是像下面这样被运行的话:
AutoIt3.exe myscript.au3 参数1 "这是 一个其它参数"
$CmdLine 等价于... 2
$CmdLine 等价于... 参数1
$CmdLine 等价于... 这是一个其它参数
@ScriptName 等价于... myscript.au3
除开 $CmdLine 之外还有一个变量叫做 $CmdLineRaw ,它保存着完整的未被拆分的命令行语句, 对于上面这个例子:
$CmdLineRaw 等价于... myscript.au3 参数1 "这是一个其它参数"
如果脚本已经被编译,那么得到的值将会是下面这个样子:
myscript.exe 参数1 "这是 一个其它参数"
$CmdLineRaw 等价于... 参数1 "这是一个其它参数"
注意 $CmdLineRaw 会立即返回参数.
注意 : 只有 63 个参数会被 $CmdLine[...] 正常返回, 但是 $CmdLineRaw 总是会返回完整的所有参数. 谢谢楼上两位的热心、应该是我水平太差了。。。。还是不懂。。。。抱歉,呵呵。能不能说直接一点。。。。
$timestr = @YEAR & @MON & @MDAY &Chr(Random(Asc("A"), Asc("Z")))
$usage = " 参数错误!"&@CRLF&" 用法: pcrn.exe APC-或pcrn.exe"
$err = "错误"
Select
Case $CmdLine = 0
$b = "APC-" & $timestr
Case $CmdLine = 1
If $CmdLine[$CmdLine] = "APC-" Then
$b = $CmdLine & $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)
再次感谢veket_linux ,可能我的表达有误,我是想编译出的程序pcrn.exe 不加参数运行的时候不出错。
apc是一个可以自由更改的参数。
我再学习学习吧。实在是不好意思再麻烦你了。:) 太感谢 veket_linux了,原来你写的就是我想的意思。呵呵,
因为水平问题没看懂。
谢谢,敬礼 呵呵。{:face (411):} 学习了,{:face (427):}{:face (427):}{:face (427):} 做个标记,感谢分享
页:
[1]