quboboo 发表于 2015-9-2 13:51:54

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

本帖最后由 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()

quboboo 发表于 2015-9-2 14:50:37

好像是少了个CASE条件,就是不知道怎么写,新手哈,别拍

quboboo 发表于 2015-9-2 14:51:23

好像是少了个CASE条件,就是不知道怎么写,新手哈,别拍

kemyliu 发表于 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()

quboboo 发表于 2015-9-2 16:29:44

回复 4# kemyliu


    谢谢回答,不过我最初尝试就是用的这样的写法,也是一样的不工作呢,在XP和64位WIN7下都不行

flyself 发表于 2015-9-3 16:28:06

看看是什么

user030 发表于 2015-9-4 17:13:17

道行低,看不出来,建议你在 脚本中添加调试语句,看下是执行到哪一句出现问题吧。
consolewrite("内容随便加" & @cr)、msgbox(0,"标题","内容随便加") 之类的调试语句

quboboo 发表于 2015-9-12 16:55:23

新手实在找不到原因,继续求帮忙

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

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

Huiseyu 发表于 2015-9-16 22:29:25

新手实在找不到原因,继续求帮忙
quboboo 发表于 2015-9-12 16:55 http://www.autoitx.com/images/common/back.gif


    不确定,把注册表部分取消,用ini文件代替试试

Alam 发表于 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楼所说,加入调试语句,看看到底是实行到哪句出的问题吧。

quboboo 发表于 2015-10-9 12:30:22

回复 12# Alam


    谢谢楼上兄弟,这样写是对的,感谢
页: [1]
查看完整版本: 【已解决】请教下select和if的用法实例,内有脚本