ch_sty 发表于 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

                               

ch_sty 发表于 2015-6-8 12:21:05

新人刚刚起步,请各位大神不吝指教.. 拜谢!! orz...

ila 发表于 2015-6-8 15:19:18

1,你这应该是反编的。例如:3-3。
在msgbox里面的都要改。
2,EnvGet("systemdrive"),这个环境变量在刚安装的系统里都没有,应该是这段代码前面自定义的。
可以用宏@HomeDrive来确定系统盘所在。

ch_sty 发表于 2015-6-8 16:03:56

1,你这应该是反编的。例如:3-3。
在msgbox里面的都要改。
2,EnvGet("systemdrive"),这个环境变量在刚 ...
ila 发表于 2015-6-8 15:19 http://www.autoitx.com/images/common/back.gif


我觉得问题应该出在嵌套的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

luren666 发表于 2015-6-8 23:10:14

我觉得您在删除系统目录下的文件的时候,是不是需要先请求获取一下管理员权限?
页: [1]
查看完整版本: 练习代码,仔细对校依然出错.求解!