找回密码
 加入
搜索
查看: 3957|回复: 5

[AU3基础] 练习代码,仔细对校依然出错.求解!

[复制链接]
发表于 2015-6-8 12:11:09 | 显示全部楼层 |阅读模式
初学者, 学习过程中做下面这个练习的完全发现不到问题,但是运行就出错.求老鸟指点!
Opt("mustdeclarevars",1)

_main()
Exit
Func _main()
        Local $driversdir=EnvGet("systemdrive")&"\drivers"
        Local $cameradir=$driversdir&"\camera"
        Local $tempdir=EnvGet("windir")&"\temp"
        If FileExists($driversdir)Then
                Local $r=MsgBox(3+32,"3-3",_
                        "发现"&$driversdir&",是否删除?"_
                        &@CRLF&@CRLF&_
                        "单击“是”,全部删除;"&@CRLF&_
                        "单击“否”,保留摄像头驱动;"& @CRLF & _
                        "单击“取消”,不删除")
                If $r=6 Then
                        DirRemove($driversdir,1)
                        MsgBox(0+64,"3-3","全部的孙子已经干掉")
                ElseIf $r=7 Then
                        DirMove($driversdir&"\camera",_
                                $tempdir&"\_camera",1)
                        DirRemove($driversdir,1)
                        DirCreate($driversdir)
                        DirMove($tempdir&"\_camera",_
                                $DriversDir & "\Camera", 1)
                        MsgBox(0+64,"3-3",_
                                "除摄像头以外的驱动已删除!")
                ElseIf $r=2 Then
                        MsgBox(0+64,"3-3","全部驱动已经保留!")
                EndIf
        Else
                MsgBox(0,"3-3","未发现"&$driversdir&"!")
        EndIf
endfunc

                                
 楼主| 发表于 2015-6-8 12:21:05 | 显示全部楼层
新人刚刚起步,请各位大神不吝指教.. 拜谢!! orz...
发表于 2015-6-8 15:19:18 | 显示全部楼层
1,你这应该是反编的。例如:3-3。
在msgbox里面的都要改。
2,EnvGet("systemdrive"),这个环境变量在刚安装的系统里都没有,应该是这段代码前面自定义的。
可以用宏@HomeDrive来确定系统盘所在。
 楼主| 发表于 2015-6-8 16:03:56 | 显示全部楼层
1,你这应该是反编的。例如:3-3。
在msgbox里面的都要改。
2,EnvGet("systemdrive"),这个环境变量在刚 ...
ila 发表于 2015-6-8 15:19



我觉得问题应该出在嵌套的if语句当中,因为在C盘不存在drivers文件夹时.运行起来不报错.
存在drivers文件夹事才出错..
发表于 2015-6-8 22:51:31 | 显示全部楼层
1.我不知道是不是你自己写的还是像 #3,或者你基础真的很糟糕。
2.你报错的原因就在下划线,使用下划线要使用空格分开,而你没有。其就如 #3所言!
  MsgBox(_
               0,_
               0,_
               0) ;no
  MsgBox( _
               0, _
               0, _
               0) ;yes

3.使用的环境变量不如直接使用@HomeDrive,我不知道你的所用。
P.S. 如果不是做个人驱动管理的话就不要用@HomeDrive,以防计算机上存在多系统!在winpe下那就不要环境变量了...

4.我看了你保留摄像头驱动的方法,个人认为效率降低了。
你用的是先移动摄像头驱动到ws\temp\camera,再删除c:\drivers,接着再创建,接着再移动ws\temp\camera驱动到 c:\drivers\camera
如果摄像头驱动较大移过来移过去比较浪费时间,不过摄像头驱动没有多大,随你。
5.以上个人观点,欢迎批评指教...
Opt("mustdeclarevars",1)
_main()
Exit
Func _main()
        Local $driversdir = EnvGet("systemdrive") & "\drivers"
        Local $cameradir = $driversdir & "\camera"
        Local $tempdir = EnvGet("windir") & "\temp"
        If FileExists($driversdir) Then
                Local $r = MsgBox(3 + 32, "3-3", _
                        "发现" & $driversdir & ", 是否删除?" _
                        & @CRLF & @CRLF& _
                        "单击“是”,全部删除;" &@CRLF & _
                        "单击“否”,保留摄像头驱动;" & @CRLF & _
                        "单击“取消”,不删除")
                If $r = 6 Then ;yes
                        DirRemove($driversdir, 1)
                        MsgBox(64, "3-3", "全部的孙子已经干掉")
                ElseIf $r = 7 Then ;no
                        DirMove($driversdir & "\camera", _
                                $tempdir & "\_camera", 1)
                        DirRemove($driversdir, 1)
                        DirCreate($driversdir)
                        DirMove($tempdir & "\_camera", _
                                $DriversDir & "\camera", 1)
                        MsgBox(64, "3-3", _
                                "除摄像头以外的驱动已删除!")
                ElseIf $r = 2 Then ;cancel
                        MsgBox(64, "3-3", "全部驱动已经保留!")
                EndIf
        Else
                MsgBox(0, "3-3", "未发现" & $driversdir & "!")
        EndIf
endfunc
发表于 2015-6-8 23:10:14 | 显示全部楼层
我觉得您在删除系统目录下的文件的时候,是不是需要先请求获取一下管理员权限?
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-28 23:48 , Processed in 0.081675 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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