【已解决】请教下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() 好像是少了个CASE条件,就是不知道怎么写,新手哈,别拍 好像是少了个CASE条件,就是不知道怎么写,新手哈,别拍 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() 回复 4# kemyliu
谢谢回答,不过我最初尝试就是用的这样的写法,也是一样的不工作呢,在XP和64位WIN7下都不行 看看是什么 道行低,看不出来,建议你在 脚本中添加调试语句,看下是执行到哪一句出现问题吧。
consolewrite("内容随便加" & @cr)、msgbox(0,"标题","内容随便加") 之类的调试语句 新手实在找不到原因,继续求帮忙 本帖最后由 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: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 新手实在找不到原因,继续求帮忙
quboboo 发表于 2015-9-12 16:55 http://www.autoitx.com/images/common/back.gif
不确定,把注册表部分取消,用ini文件代替试试 回复 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楼所说,加入调试语句,看看到底是实行到哪句出的问题吧。 回复 12# Alam
谢谢楼上兄弟,这样写是对的,感谢
页:
[1]