看下那出毛病了 怎么运行不出来
$var = DriveGetDrive("CDROM")dim $exe,$reg,$bat
$s1 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s1")
$s2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s2")
$s3 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s3")
$s4 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s4")
If Not @error Then
For $i = 1 To $var
DirCopy($var[$i] & '\常用软件', "c:\常用软件", 1)
if $s1 = 0 then
RunWait("C:\WINDOWS\Temp\快速设定分辨率.exe")
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s1","REG_SZ","1")
EndIf
if $s2 = 0 then
RunWait("C:\WINDOWS\Temp\一键填写IP192.168.1.110.bat","",@SW_HIDE)
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s2","REG_SZ","1")
EndIf
if $s3 = 0 then
RunWait("C:\WINDOWS\Temp\智能关闭无用服务.bat","",@SW_HIDE)
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s3","REG_SZ","1")
EndIf
if $s4 = 0 then
RunWait("C:\常用软件\SOFTINST.EXE")
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s4","REG_SZ","1")
EndIf
Next
EndIf 看不懂,帮你顶。。。 我给你的代码做下注释。 你自己看看错在哪。$var = DriveGetDrive("CDROM");调用库函数获取光驱的个数和盘符。返回类型为数组$var,其中$var代表光驱个数。
;$var到$var是光驱的盘符。
dim $exe,$reg,$bat;定义这3个变量是干什么的? 本代码中没用到过。
$s1 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s1");从注册表中读出HKEY_LOCAL_MACHINE\SOFTWARE\Temp下的s1的值。
$s2 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s2");以下同,省略不写了。
$s3 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s3")
$s4 = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s4")
;这里有个疑问,如果该注册表中没有HKEY_LOCAL_MACHINE\SOFTWARE\Temp键,返回值是个空值。这个判断无效。
;建议读注册表之前先判断注册表中有没有HKEY_LOCAL_MACHINE\SOFTWARE\Temp键,没有的话直接执行IF中的那段代码。
;~ 成功: 返回指定值项的数据. @EXTENDED 设置类型为 $REG_... 值的类型,这些类型定义于 "Constants.au3" 包含文件.
;~ 失败: 返回空字符串 "",并把 @error 设为以下值之一:
;~ 1 如果不能打开被请求的键
;~ 2 如果不能打开被请求的主键
;~ 3 如果不能远程连接到注册表
;~ -1 如果不能打开被请求的值
;~ -2 如果值的类型是不支持的
;~ 帮助中的说明如上,很显然,如果不存在该注册表项目,@error的值是2,
;~ 你的NOT @error 并不是1,所以,第一个判断就失效,程序直接退出了
;~ 如果存在该主键而不存在子健,那么@error的值是1,NOT @error的值是0,IF判断也不会继续执行。
;~ 所以,你的程序在执行之初不管运行了与否,都首先判断注册表中有没有Temp键和其下的4个子健。
;~ 如果没有则直接执行下面的相应代码。如果有才进行判断。
;~ 判断方法是:
;~ 1.直接RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s1")这4句,然后从@error返回值来判断。
;~ 2.RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", 1)……RegEnumVal("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", 4),
;~ 还是根据@error返回值来判断。
;~ 可以将下面的FOR循环中的所有代码定义成一个子函数,需要调用的时候直接调用函数名就可以少写许多代码。
If Not @error Then;如果注册表读取成功才执行下面的代码,否则不执行。
For $i = 1 To $var ;定义变量$i用来获取光驱盘符。
DirCopy($var[$i] & '\常用软件', "c:\常用软件", 1)
if $s1 = 0 then;读取出的$s1为0才执行。
RunWait("C:\WINDOWS\Temp\快速设定分辨率.exe")
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s1","REG_SZ","1")
EndIf
if $s2 = 0 Then;读取出的$s2为0才执行。
RunWait("C:\WINDOWS\Temp\一键填写IP192.168.1.110.bat","",@SW_HIDE)
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s2","REG_SZ","1")
EndIf
if $s3 = 0 then ;读取出的$s3为0才执行。
RunWait("C:\WINDOWS\Temp\智能关闭无用服务.bat","",@SW_HIDE)
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s3","REG_SZ","1")
EndIf
if $s4 = 0 Then;读取出的$s4为0才执行。
RunWait("C:\常用软件\SOFTINST.EXE")
Regwrite("HKEY_LOCAL_MACHINE\SOFTWARE\Temp", "s4","REG_SZ","1")
EndIf
Next
EndIf
另外,送上一句话,程序的关键判断语句之前可以加上MsgBox(0,Not @error,@error)这样的语句来回显判断参数,以确保程序的流程是按你的思路在执行。 你帮我加下吧
我的问题发在上面了
谁能把这段代码加个判断语句1
谁能把这段代码加个判断语句
记录付费主题, 价格:金钱 10 块 $var = DriveGetDrive("CDROM")
If Not @error Then
For $i = 1 To $var
DirCopy($var[$i] & '\常用软件', "c:\常用软件", 1)
RunWait("C:\WINDOWS\Temp\快速设定分辨率.exe")
RunWait("C:\WINDOWS\Temp\一键填写IP192.168.1.110.bat","",@SW_HIDE)
RunWait("C:\WINDOWS\Temp\智能关闭无用服务.bat","",@SW_HIDE)
RunWait("C:\常用软件\SOFTINST.EXE")
Next
EndIf
这段代码 。exe和.bat都运行2遍 怎么加判断语句 在那加判断语句 才不运行2遍
命令要简单明了的
一看就明白的加上注解 谢谢了
收藏 分享
已好的代码如下
dim $exe,$reg,$bat
if $exe <> "" Then
Run($exe)
ElseIf $reg <> "" Then
Run(@ComSpec & ' /c regedit /s "'&$reg&'"',"", @SW_HIDE)
ElseIf $bat <> "" Then
Run($bat,"",@SW_HIDE)
Else
Exit
EndIf
页:
[1]