WINDOWS脚本实践:为SAP补丁制作的VBS脚本代码
Windows  /  管理员 发布于 4年前   465
脚本主要功能包括:
注册表读取与修改
文件内容修改如HOSTS、SERVICES文件
文件属性修改和文件复制
系统环境变量设置
等,仅供参考
复制代码 代码如下:
'SAP设置脚本
'编写:SCZ 2005.04.20
'最后修改日期: 2005.04.22
'必须存在目录: BW(补丁文件) 和 登入界面
'========================================================================
'全局变量、处理过程
'========================================================================
WScript.Echo "该脚本只能正常运行在WIN2000/XP/2003的操作系统管理员权限下,按'确定'继续"
Set objFSO = CreateObject("Scripting.FileSystemObject") '文件系统对象
strWindir = GetWindir() '获取WINDOWS目录
strSystem = GetSystemPath() '获取System目录
strSapPath = GetSAPPath() 'SAP FrontEnd目录
strSapGuiPath = strSapPath & "SAPgui" 'SapGui目录
strSapBWPath = strSapPath & "BW" 'BW目录
strHostPath = GetHostFilePath() 'host 文件所在目录
strServicesPath = GetServicesPath() 'services 文件所在目录
Call CopyFiles() '复制文件
Call ModifyHost(strHostPath) '修改HOST文件
Call ModifyServices(strServicesPath) '修改SERVICES文件
Call SetEvn(strSapGuiPath) '设置环境变量
Call SetTCPIP(strServicesPath) '修改TCPIP参数
WScript.Echo "BW设置处理完毕,请手动安装SAP系统补丁"
'========================================================================
'通过注册获取SAP FrontEnd目录
'========================================================================
Function GetSAPPath()
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
strComputer & " ootdefault:StdRegProv")
strKeyPath = "SOFTWARESAPSAP Shared"
strEntryName = "SAPdestdir"
objReg.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strValue
GetSAPPath = strValue
If IsNull(strValue) Then
Wscript.Echo "SAP注册信息读取失败,SAP未安装或系统已损坏,安装终止"
Err.Raise(507)
Err.Clear
End If
End Function
'========================================================================
'获取WINDOWS目录
'========================================================================
Function GetWindir()
Const WindowFolder = 0
Set GetWindir = objFSO.GetSpecialFolder(WindowFolder)
End Function
'========================================================================
'获取SYSTEM目录
'========================================================================
Function GetSystemPath()
Const SystemFolder = 1
Set GetSystemPath = objFSO.GetSpecialFolder(SystemFolder)
End Function
'========================================================================
'获取HOST文件所在目录
'========================================================================
Function GetHostFilePath()
GetHostFilePath = strSystem & "driversetc"
End Function
'========================================================================
'获取Services文件所在目录
'========================================================================
Function GetServicesPath()
GetServicesPath = strSystem & "driversetc"
End Function
'========================================================================
'复制文件
'========================================================================
Function CopyFiles()
If NOT objFSO.FolderExists(strSapBWPath) Then
WScript.Echo "BW组件未安装,请先安装SAP的BW组件,再运行该脚本"
Err.Raise(507)
Err.Clear
End If
Call ClearAttribs(strSapBWPath)
objFSO.CopyFile "登陆界面*.ini" , strWindir
objFSO.CopyFile "BWgssntlm.dll" , strSapGuiPath & "gssntlm.dll"
objFSO.CopyFile "BWsncgss32.dll" , strSystem & "sncgss32.dll"
strBakFolder =strSapBWPath & "ak"
IF NOT objFSO.FolderExists(strBakFolder) Then
objFSO.CreateFolder(strBakFolder)
Else
Call ClearAttribs(strBakFolder)
End If
objFSO.CopyFile strSapBWPath & "*.xla" , strBakFolder
objFSO.CopyFile "BW*.xla" , strSapBWPath
End Function
'========================================================================
'去除文件只读属性
'========================================================================
Function ClearAttribs(strFolder)
Call ClearFileAttrib(strFolder & "sapbex.xla")
Call ClearFileAttrib(strFolder & "sapbexc.xla")
Call ClearFileAttrib(strFolder & "sapbexs.xla")
Call ClearFileAttrib(strFolder & "sapbex0.xla")
Call ClearFileAttrib(strSystem & "sncgss32.dll")
End Function
'========================================================================
'去除文件只读属性
'========================================================================
Function ClearFileAttrib(strFile)
If objFSO.FileExists(strFile) Then
Set f = objFSO.GetFile(strFile)
f.Attributes = 0
End If
End Function
'========================================================================
'修改HOST文件
'========================================================================
Function ModifyHost(strHostPath)
strHostFile = strHostPath & "hosts"
strHostBak = strHostPath & "hosts.bak"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
objFSO.CopyFile strHostFile , strHostBak
Set objFile = objFSO.OpenTextFile(strHostFile, ForReading, False)
strContents = objFile.ReadAll
objFile.Close
Set objFile = objFSO.OpenTextFile(strHostFile, ForAppending, False)
objFile.WriteBlankLines 1
compResult = Instr(strContents,"192.168.0.136")
If compResult = 0 Then objFile.WriteLine("192.168.0.136" & Chr(9) & "bwprd")
compResult = Instr(strContents,"192.168.0.135")
If compResult = 0 Then objFile.WriteLine("192.168.0.135" & Chr(9) & "bwdev")
compResult = Instr(strContents,"192.168.0.171")
If compResult = 0 Then objFile.WriteLine("192.168.0.171" & Chr(9) & "bwqas")
objFile.close
End Function
'========================================================================
'修改SERVICES文件
'========================================================================
Function ModifyServices(strServicesPath)
strServicesFile = strServicesPath & "services"
strServicesbak = strServicesPath & "services.bak"
Const ForReading = 1, ForWriting = 2, ForAppending = 8
objFSO.CopyFile strServicesFile , strServicesbak
Set objFile = objFSO.OpenTextFile(strServicesFile, ForReading, False)
strContents = objFile.ReadAll
objFile.Close
Set objFile = objFSO.OpenTextFile(strServicesFile, ForAppending, False)
objFile.WriteBlankLines 1
compResult = Instr(strContents, "sapmsP01")
If compResult = 0 Then objFile.WriteLine("sapmsP01" & Chr(9) & "3600/tcp")
objFile.Close
End Function
'========================================================================
'设置环境变量
'------------------------------------------------------------------------
Function SetEvn(strSapGuiPath)
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Set colItems = objWMIService.ExecQuery( "Select * from Win32_Environment where name = 'SNC_LIB'")
Found = False
For Each objItem in colItems
If UCase(objItem.Name) = "SNC_LIB" Then
Found = True
objItem.VariableValue = strSapGuiPath & "gssntlm.dll"
objItem.Put_
End If
Next
If (Found = False) Then
Set oEvn = objWMIService.Get("Win32_Environment").Spawninstance_
oEvn.Name = "SNC_LIB"
oEvn.VariableValue = strSapGuiPath & "gssntlm.dll"
oEvn.SystemVariable = True
oEvn.UserName = "<SYSTEM>"
oEvn.Status = "OK"
Set oPath = oEvn.Put_
End If
End Function
'========================================================================
'========================================================================
'设置TCP/IP参数
'------------------------------------------------------------------------
Function SetTCPIP(strServicesPath)
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\" & _
strComputer & " ootdefault:StdRegProv")
strKeyPath = "SYSTEMCurrentControlSetServicesTcpipParameters"
strEntryName = "DataBasePath"
objReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strEntryName,strServicesPath
End Function
'========================================================================
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号