找回密码
 加入
搜索
查看: 5620|回复: 12

[AU3基础] 【已解决】请教下select和if的用法实例,内有脚本

  [复制链接]
发表于 2015-9-2 13:51:54 | 显示全部楼层 |阅读模式
本帖最后由 quboboo 于 2015-10-10 14:42 编辑

想做个自动安装 JAVA 的脚本,XP下是安装 JAVA7,WIN8、10这些就是安装 JAVA8,单独的JAVA7或者JAVA8的脚本我做好了,自动安装没有问题,现在是合起来的时候不工作,应该是我用IF和SELECT不熟悉引起的,请大家帮忙看下问题在哪,要实现的效果就是判断是XP系统后就安装JAVA7,非XP系统后就安装JAVA8同时如果是64位的就再加装64位JAVA,安装好后取消了一些启动项。我在64位WIN7下测试时,没有运行后半段进行安装直接就结束了,不知道哪里的问题,请指点,谢谢
Opt("WinTitleMatchMode", 2)

WinMinimizeAll()

Select
        ;XP 系统安装下面的 JAVA 7
        Case @OSVersion = "WIN_XP"
                RunWait(@ScriptDir & "\jre-7u79-windows-i586.exe /s")
                Sleep(1000)

                ;打开 JAVA 控制面板取消其自动更新
                Opt("MouseCoordMode", 0)
                ;BlockInput(1)
                Run(@ProgramFilesDir & "\Java\jre7\bin\javacpl.exe /qr")
                WinWaitActive("Java 控制面板")
                Do
                        Sleep(100)
                Until MouseClick("left", 55, 35) = 1
                MouseClick("left", 85, 155)
                Sleep(1000)
                If WinActive("Java Update") Then
                        MouseClick("left", 460, 170)
                EndIf
                WinWaitActive("Java 控制面板")
                MouseClick("left", 315, 535)
                ;BlockInput(0)

                RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
                RunWait(@ComSpec & " /c net stop JavaQuickStarterService", "", @SW_HIDE)
                RunWait(@ComSpec & " /c sc config JavaQuickStarterService start= demand", "", @SW_HIDE)
                Sleep(1000)

        Case Else
                ;非 WindowsXP 安装下面的 JAVA 8
                RunWait(@ScriptDir & "\jre-8-windows-i586.exe /s AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable")
                Sleep(1000)
                ;64位系统再加装64位 JAVA
                If @OSArch = "X64" Then
                        RunWait(@ScriptDir & "\jre-8-windows-x64.exe /s AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable")
                        RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
                EndIf
                Sleep(1000)
                RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
EndSelect

WinMinimizeAllUndo()
 楼主| 发表于 2015-9-2 14:50:37 | 显示全部楼层
好像是少了个CASE条件,就是不知道怎么写,新手哈,别拍
 楼主| 发表于 2015-9-2 14:51:23 | 显示全部楼层
好像是少了个CASE条件,就是不知道怎么写,新手哈,别拍
发表于 2015-9-2 15:55:12 | 显示全部楼层
Opt("WinTitleMatchMode", 2)

WinMinimizeAll()
if @OSVersion = "WIN_XP" then

        ;XP 系统安装下面的 JAVA 7
        RunWait(@ScriptDir & "\jre-7u79-windows-i586.exe /s")
                Sleep(1000)

                ;打开 JAVA 控制面板取消其自动更新
                Opt("MouseCoordMode", 0)
                ;BlockInput(1)
                Run(@ProgramFilesDir & "\Java\jre7\bin\javacpl.exe /qr")
                WinWaitActive("Java 控制面板")
                Do
                        Sleep(100)
                Until MouseClick("left", 55, 35) = 1
                MouseClick("left", 85, 155)
                Sleep(1000)
                If WinActive("Java Update") Then
                        MouseClick("left", 460, 170)
                EndIf
                WinWaitActive("Java 控制面板")
                MouseClick("left", 315, 535)
                ;BlockInput(0)

                RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
                RunWait(@ComSpec & " /c net stop JavaQuickStarterService", "", @SW_HIDE)
                RunWait(@ComSpec & " /c sc config JavaQuickStarterService start= demand", "", @SW_HIDE)
                Sleep(1000)

Else
                ;非 WindowsXP 安装下面的 JAVA 8
                RunWait(@ScriptDir & "\jre-8-windows-i586.exe /s AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable")
                Sleep(1000)
                ;64位系统再加装64位 JAVA
                If @OSArch = "X64" Then
                        RunWait(@ScriptDir & "\jre-8-windows-x64.exe /s AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable")
                        RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
                EndIf
                Sleep(1000)
                RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
Endif

WinMinimizeAllUndo()
 楼主| 发表于 2015-9-2 16:29:44 | 显示全部楼层
回复 4# kemyliu


    谢谢回答,不过我最初尝试就是用的这样的写法,也是一样的不工作呢,在XP和64位WIN7下都不行
发表于 2015-9-3 16:28:06 | 显示全部楼层
看看是什么
发表于 2015-9-4 17:13:17 | 显示全部楼层
道行低,看不出来,建议你在 脚本中  添加调试语句,看下是执行到哪一句出现问题吧。
consolewrite("内容随便加" & @cr)、msgbox(0,"标题","内容随便加") 之类的调试语句
 楼主| 发表于 2015-9-12 16:55:23 | 显示全部楼层
新手实在找不到原因,继续求帮忙
发表于 2015-9-12 18:33:18 | 显示全部楼层
本帖最后由 mshuking 于 2015-9-12 18:34 编辑
if @OSVersion = "WIN_XP" then
…………
endif


if @OSVersion = "WIN_7" then
.........
endif
一个系统加一次   IF…………endif
发表于 2015-9-12 18:37:48 | 显示全部楼层
本帖最后由 mshuking 于 2015-9-12 18:38 编辑
if @OSVersion = "WIN_XP" then

        ;XP 系统安装下面的 JAVA 7
        RunWait(@ScriptDir & "\jre-7u79-windows-i586.exe /s")
                Sleep(1000)

                ;打开 JAVA 控制面板取消其自动更新
                Opt("MouseCoordMode", 0)
                ;BlockInput(1)
                Run(@ProgramFilesDir & "\Java\jre7\bin\javacpl.exe /qr")
                WinWaitActive("Java 控制面板")
                Do
                        Sleep(100)
                Until MouseClick("left", 55, 35) = 1
                MouseClick("left", 85, 155)
                Sleep(1000)
                If WinActive("Java Update") Then
                        MouseClick("left", 460, 170)
                EndIf
                WinWaitActive("Java 控制面板")
                MouseClick("left", 315, 535)
                ;BlockInput(0)

                RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
                RunWait(@ComSpec & " /c net stop JavaQuickStarterService", "", @SW_HIDE)
                RunWait(@ComSpec & " /c sc config JavaQuickStarterService start= demand", "", @SW_HIDE)
endif
if @OSVersion = "WIN_7" then    ;非 WindowsXP 安装下面的 JAVA 8
                RunWait(@ScriptDir & "\jre-8-windows-i586.exe /s AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable")
                Sleep(1000)
                If @OSArch = "X64" Then  ;64位系统再加装64位 JAVA
                        RunWait(@ScriptDir & "\jre-8-windows-x64.exe /s AUTO_UPDATE=Disable REBOOT=Disable NOSTARTMENU=Enable")
                        RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
                EndIf
                Sleep(1000)
                RegDelete("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run", "SunJavaUpdateSched")
Endif
发表于 2015-9-16 22:29:25 | 显示全部楼层
新手实在找不到原因,继续求帮忙
quboboo 发表于 2015-9-12 16:55



    不确定,把注册表部分取消,用ini文件代替试试
发表于 2015-9-19 17:46:52 | 显示全部楼层
回复 8# quboboo

条件判断没问题吧,我至少我用简化了测试代码是这样。
WinMinimizeAll()
Select
        ;XP 系统安装下面的 JAVA 7
        Case @OSVersion = "WIN_XP"
             MsgBox(0, '', 'xp')
        Case Else
                ;非 WindowsXP 安装下面的 JAVA 8
                MsgBox(0, '', 'none xp')
                Sleep(1000)
                ;64位系统再加装64位 JAVA
                If @OSArch = "X64" Then
                        MsgBox(0, '', 'x64')
                EndIf
EndSelect
WinMinimizeAllUndo()
建议如同7楼所说,加入调试语句,看看到底是实行到哪句出的问题吧。
 楼主| 发表于 2015-10-9 12:30:22 | 显示全部楼层
回复 12# Alam


    谢谢楼上兄弟,这样写是对的,感谢
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-5-2 14:25 , Processed in 0.082087 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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