@echo off
@setlocal
REM **************************************************************
REM *** All Rights Reserved. Copyright (C) 2002, 2003, Hitachi, Ltd.
REM *** Licensed Material of Hitachi, Ltd.
REM **************************************************************

REM *** HPTM Collecting Log files

REM **************************************************************
REM *** Initial Proc
REM **************************************************************
set input_dir=%1
:GETDIR
shift
if "%1"=="" GOTO END_GETDIR
set input_dir=%input_dir% %1
GOTO GETDIR

:END_GETDIR

GOTO CHECK

:CHECK
IF "%input_dir%" ==""  set input_dir=%TEMP%\drmlog
@echo Backup Log Directory: "%input_dir%"
IF EXIST "%input_dir%" GOTO DELDIR
GOTO START

:DELDIR
@echo Backup Log Directory is exist. Delete to continue? (y/n)
rmdir "%input_dir%" /s > nul
IF EXIST "%input_dir%" GOTO MESSAGE
GOTO START

:START
IF NOT EXIST "%input_dir%\drm" mkdir "%input_dir%\drm"
REM *************************************************************


REM **************************************************************
REM *** Windows version
REM **************************************************************
@echo Check the version of Windows.
set tmp_vbs_file=%input_dir%\drmlog_winver.vbs
REM ---------------------------------------------------------------------------------------------------
echo For Each objOS In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")  >  "%tmp_vbs_file%"
echo    If     (Left(objOS.Version,4) = "5.0.") Then                                >> "%tmp_vbs_file%"
echo        WScript.Quit(2000)                                                      >> "%tmp_vbs_file%"
echo    ElseIf (Left(objOS.Version,4) = "5.2.") Then                                >> "%tmp_vbs_file%"
echo        WScript.Quit(2003)                                                      >> "%tmp_vbs_file%"
echo    Else                                                                        >> "%tmp_vbs_file%"
echo        WScript.Quit(1)                                                         >> "%tmp_vbs_file%"
echo    End If                                                                      >> "%tmp_vbs_file%"
echo Next                                                                           >> "%tmp_vbs_file%"
REM ---------------------------------------------------------------------------------------------------
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%"
set WINVER=%ERRORLEVEL%
@del "%tmp_vbs_file%"
If %WINVER% == 1 goto GET_WIN_VER_ERROR

@echo Check the bit number.
set tmp_vbs_file=%input_dir%\drmlog_winbit.vbs
REM ------------------------------------------------------------------------------------------------
echo Const HKEY_LOCAL_MACHINE = ^&H80000002                                      >  "%tmp_vbs_file%"
echo Set objStdRegProv = GetObject("winmgmts:root\default:StdRegProv")           >> "%tmp_vbs_file%"
echo Set WshShell      = WScript.CreateObject("WScript.Shell")                   >> "%tmp_vbs_file%"
echo retVal = objStdRegProv.EnumKey(HKEY_LOCAL_MACHINE, "SOFTWARE", subKeys)     >> "%tmp_vbs_file%"
echo If (retVal ^<^> 0) Then WScript.Quit(1)                                     >> "%tmp_vbs_file%"
echo findFlag = 0                                                                >> "%tmp_vbs_file%"
echo For Each subKey In subKeys                                                  >> "%tmp_vbs_file%"
echo     If (StrComp(subKey,"Wow6432Node",1) = 0) Then findFlag = 1 : Exit For   >> "%tmp_vbs_file%"
echo Next                                                                        >> "%tmp_vbs_file%"
echo If (findFlag = 1) Then bitMode = 6432 Else bitMode = 32                     >> "%tmp_vbs_file%"
echo WScript.Quit(bitMode)                                                       >> "%tmp_vbs_file%"
REM ------------------------------------------------------------------------------------------------
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%"
set WINBIT=%ERRORLEVEL%
@del "%tmp_vbs_file%"
If %WINBIT% == 1 goto GET_WIN_VER_ERR


REM *************************************************************
REM *** Install Path of HPTM
REM *************************************************************
IF %WINVER% == 2000 (
        set REG_KEY_BASE=SOFTWARE\Hitachi\HiCommand
) ELSE IF %WINVER% == 2003 (
    IF %WINBIT% == 32 (
        set REG_KEY_BASE=SOFTWARE\Hitachi\HiCommand
    ) ELSE IF %WINBIT% == 6432 (
        set REG_KEY_BASE=SOFTWARE\Wow6432Node\Hitachi\HiCommand
    )
)
set REG_KEY_BASE_INST_PATH=%REG_KEY_BASE%\DRM\PathName
set REG_KEY_BASE_INST_STRING=Path00

set tmp_vbs_file=%input_dir%\getinstpath.vbs
REM --------------------------------------------------------------------------------------------------------------------
echo Const HKEY_LOCAL_MACHINE = ^&H80000002                                                          >  "%tmp_vbs_file%"
echo Set objStdRegProv = GetObject("winmgmts:root\default:StdRegProv")                               >> "%tmp_vbs_file%"
echo regKeyInstPath = WScript.Arguments(0)                                                           >> "%tmp_vbs_file%"
echo subName = WScript.Arguments(1)                                                                  >> "%tmp_vbs_file%"
echo retVal = objStdRegProv.GetStringValue(HKEY_LOCAL_MACHINE, regKeyInstPath, subName, InstPath)    >> "%tmp_vbs_file%"
echo If (retVal = 0) Then                                                                            >> "%tmp_vbs_file%"
echo     WScript.Echo InstPath                                                                       >> "%tmp_vbs_file%"
echo     WScript.Quit(0)                                                                             >> "%tmp_vbs_file%"
echo Else                                                                                            >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                                                             >> "%tmp_vbs_file%"
echo End If                                                                                          >> "%tmp_vbs_file%"
REM --------------------------------------------------------------------------------------------------------------------
set tmp_res_file=%input_dir%\getinstpath.txt
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%REG_KEY_BASE_INST_PATH%" "%REG_KEY_BASE_INST_STRING%" > "%tmp_res_file%"
IF %ERRORLEVEL% == 0 (
    FOR /F "usebackq delims=" %%d IN ("%tmp_res_file%") DO set BASE_INST_DIR=%%d
) ELSE (
    @del "%tmp_vbs_file%"
    @del "%tmp_res_file%"
    goto GET_HPTM_INST_PATH_ERROR
)
@del "%tmp_vbs_file%"
@del "%tmp_res_file%"


REM **************************************************************
REM *** HPTM log file and configuration file
REM **************************************************************
set BASE_LOG_DIR="%BASE_INST_DIR%\log"
set BASE_TMP_DIR="%BASE_INST_DIR%\tmp"
set BASE_ISAM_DIR="%BASE_INST_DIR%\db"
set BASE_CONF_DIR="%BASE_INST_DIR%\conf"
set BASE_SCR_DIR="%BASE_INST_DIR%\script"
IF NOT EXIST %BASE_LOG_DIR%     GOTO BASE_LOG_DIR_ERROR
IF NOT EXIST %BASE_TMP_DIR%     GOTO BASE_TMP_DIR_ERROR
IF NOT EXIST %BASE_ISAM_DIR%    GOTO BASE_ISAM_DIR_ERROR
IF NOT EXIST %BASE_CONF_DIR%    GOTO BASE_CONF_DIR_ERROR
IF NOT EXIST %BASE_SCR_DIR%     GOTO BASE_SCR_DIR_ERROR


REM *************************************************************
REM *** Saving material of HPTM
REM *************************************************************
@echo Saving material of HPTM.
set log_dir=%input_dir%\drm\log
set tmp_dir=%input_dir%\drm\tmp
set isam_dir=%input_dir%\drm\db
set conf_dir=%input_dir%\drm\conf
set scr_dir=%input_dir%\drm\script

IF NOT EXIST "%log_dir%"             mkdir "%log_dir%"
IF NOT EXIST "%tmp_dir%"             mkdir "%tmp_dir%"
IF NOT EXIST "%isam_dir%"            mkdir "%isam_dir%"
IF NOT EXIST "%conf_dir%"            mkdir "%conf_dir%"
IF NOT EXIST "%scr_dir%"            mkdir "%scr_dir%"
xcopy /H /C  "%BASE_INST_DIR%\.version*" "%input_dir%\drm\" > "%log_dir%\NULL" 2>&1
xcopy /E /C  %BASE_LOG_DIR%         "%log_dir%\"           >> "%log_dir%\NULL" 2>&1
xcopy /E /C  %BASE_TMP_DIR%         "%tmp_dir%\"           >> "%log_dir%\NULL" 2>&1
xcopy /E /C  %BASE_ISAM_DIR%        "%isam_dir%\"          >> "%log_dir%\NULL" 2>&1
xcopy /E /C  %BASE_CONF_DIR%        "%conf_dir%"           >> "%log_dir%\NULL" 2>&1
xcopy /E /C  %BASE_SCR_DIR%         "%scr_dir%"            >> "%log_dir%\NULL" 2>&1
dir /S /A "%BASE_INST_DIR%" > "%log_dir%\ls.list"

REM *** Saving HPTM registory information
@echo Saving registory information.
set drm_reg_file=%input_dir%\drm\drm_reg.conf
IF %WINVER% == 2000 (
        regedit -e "%drm_reg_file%" HKEY_LOCAL_MACHINE\SOFTWARE\HITACHI\HiCommand
) ELSE IF %WINVER% == 2003 (
    IF %WINBIT% == 32 (
        regedit -e "%drm_reg_file%" HKEY_LOCAL_MACHINE\SOFTWARE\HITACHI\HiCommand
    ) ELSE IF %WINBIT% == 6432 (
        regedit -e "%drm_reg_file%" HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\HITACHI\HiCommand
    )
)
REM *************************************************************


REM *************************************************************
REM *** Saving System files.
REM *************************************************************
REM *** System file
REM Setting "Hosts" and "Services" files directory
REM If you change directory for "Hosts", "Services" file,
REM please modify value of "ETC_DIR".
set ETC_DIR=%SystemRoot%\system32\drivers\etc

set sys_dir=%input_dir%\sys
IF NOT EXIST "%sys_dir%"      mkdir "%sys_dir%"

REM *** Event Log
@echo Saving event log files.
set tmp_vbs_file=%input_dir%\drmlog_event.vbs
REM ------------------------------------------------------------------------------------------------------------------
echo On Error Resume Next                                                                          >  "%tmp_vbs_file%"
echo ExitCode = 0                                                                                  >> "%tmp_vbs_file%"
echo OutLogDirName = WScript.Arguments(0)                                                          >> "%tmp_vbs_file%"
echo Set fs = WScript.CreateObject("Scripting.FileSystemObject")                                   >> "%tmp_vbs_file%"
echo If (fs.FolderExists(OutLogDirName) = False) Then                                              >> "%tmp_vbs_file%"
echo     WScript.Echo "folder " ^& OutLogDirName ^& " does not exist."                             >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                                                           >> "%tmp_vbs_file%"
echo End If                                                                                        >> "%tmp_vbs_file%"
echo OutLogDirName = fs.GetAbsolutePathName(OutLogDirName)                                         >> "%tmp_vbs_file%"
echo Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate,(Backup,Security)}")  >> "%tmp_vbs_file%"
echo Set LogFileSet = objWMIService.InstancesOf("Win32_NTEventLogFile")                            >> "%tmp_vbs_file%"
echo For Each Logfile In LogFileSet                                                                >> "%tmp_vbs_file%"
echo     OutLogFileName = OutLogDirName ^& "\" ^& LogFile.FileName ^& ".evt"                       >> "%tmp_vbs_file%"
echo     If (fs.FileExists(OutLogFileName)) Then fs.DeleteFile(OutLogFileName)                     >> "%tmp_vbs_file%"
echo     Err.Clear                                                                                 >> "%tmp_vbs_file%"
echo     RetVal = LogFile.BackupEventlog(OutLogFileName)                                           >> "%tmp_vbs_file%"
echo     If ((Err.Number = 0) And (RetVal = 0)) Then                                               >> "%tmp_vbs_file%"
echo         WScript.Echo "Backed up " ^& LogFile.LogfileName ^& " event log"                      >> "%tmp_vbs_file%"
echo     Else                                                                                      >> "%tmp_vbs_file%"
echo         WScript.Echo "Could not back up " ^& LogFile.LogfileName ^& " event log"              >> "%tmp_vbs_file%"
echo         ExitCode = 2                                                                          >> "%tmp_vbs_file%"
echo     End If                                                                                    >> "%tmp_vbs_file%"
echo Next                                                                                          >> "%tmp_vbs_file%"
echo WScript.Quit(ExitCode)                                                                        >> "%tmp_vbs_file%"
REM ------------------------------------------------------------------------------------------------------------------
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%sys_dir%"
@del "%tmp_vbs_file%"

@echo Saving "Hosts" and "Services" files.
xcopy /C "%ETC_DIR%\Hosts"    "%sys_dir%" >> "%log_dir%\NULL" 2>&1
xcopy /C "%ETC_DIR%\Services" "%sys_dir%" >> "%log_dir%\NULL" 2>&1

REM *** Saving "Dr. Watson Log" file
@echo Saving "Dr. Watson Log" file.
IF %WINVER% == 2000 (
    set LogFilePath=%SystemDrive%\Documents and Settings\All Users\Documents\DrWatson
    set CrashDumpFile=%SystemDrive%\Documents and Settings\All Users\Documents\DrWatson\user.dmp
) ELSE IF %WINVER% == 2003 (
    set LogFilePath=%SystemDrive%\Documents and Settings\%USERNAME%\Local Settings\Application Data\Microsoft\Dr Watson
    set CrashDumpFile=%SystemDrive%\Documents and Settings\%USERNAME%\Local Settings\Application Data\Microsoft\Dr Watson\user.dmp
)
set LogFileName=%LogFilePath%\drwtsn32.log
IF EXIST "%LogFileName%"   xcopy /C "%LogFileName%"   "%sys_dir%" >> "%log_dir%\NULL" 2>&1
IF EXIST "%CrashDumpFile%" xcopy /C "%CrashDumpFile%" "%sys_dir%" >> "%log_dir%\NULL" 2>&1

REM *** Saving the list of the processes
@echo Saving the list of the processes.
set tmp_vbs_file=%input_dir%\drmlog_ps.vbs
REM ---------------------------------------------------------------------------------------------------
echo WScript.Echo "Name" ^& vbTab ^& "ProcessId" ^& vbTab ^& "CPUToltalTime (sec)"  >  "%tmp_vbs_file%"
echo For Each Process In GetObject("winmgmts:").InstancesOf("Win32_process")        >> "%tmp_vbs_file%"
echo     WScript.Echo Process.Name ^& vbTab ^& Process.ProcessId ^& vbTab ^&    _   >> "%tmp_vbs_file%"
echo     Fix((CSng(Process.KernelModeTime)+CSng(Process.UserModeTime))/10000000)    >> "%tmp_vbs_file%"
echo Next                                                                           >> "%tmp_vbs_file%"
REM ---------------------------------------------------------------------------------------------------
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" > "%sys_dir%\proc.list"
@del "%tmp_vbs_file%"

REM *** Saving material of OS information
@echo Saving material of OS information.
set tmp_vbs_file=%input_dir%\drmlog_OS.vbs
REM -----------------------------------------------------------------------------------------------------------
echo For Each objOS In GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")          >  "%tmp_vbs_file%"
echo     Wscript.Echo _                                                                     >> "%tmp_vbs_file%"
echo         "Name:             " ^& vbTab ^& objOS.Name                    ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "Caption:          " ^& vbTab ^& objOS.Caption                 ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "CurrentTimeZone:  " ^& vbTab ^& objOS.CurrentTimeZone         ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "LastBootUpTime:   " ^& vbTab ^& objOS.LastBootUpTime          ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "LocalDateTime:    " ^& vbTab ^& objOS.LocalDateTime           ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "Locale:           " ^& vbTab ^& objOS.Locale                  ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "Manufacturer:     " ^& vbTab ^& objOS.Manufacturer            ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "OSType:           " ^& vbTab ^& objOS.OSType                  ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "Version:          " ^& vbTab ^& objOS.Version                 ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "Service Pack:     " ^& vbTab ^& objOS.ServicePackMajorVersion ^& _            >> "%tmp_vbs_file%"
echo                                   "." ^& objOS.ServicePackMinorVersion ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "CSDVersion:       " ^& vbTab ^& objOS.CSDVersion              ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "WindowsDirectory: " ^& vbTab ^& objOS.WindowsDirectory        ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "BuildNumber:      " ^& vbTab ^& objOS.BuildNumber             ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "BuildType:        " ^& vbTab ^& objOS.BuildType               ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "InstallDate:      " ^& vbTab ^& objOS.InstallDate             ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "Organization:     " ^& vbTab ^& objOS.Organization            ^& vbCrLf ^& _  >> "%tmp_vbs_file%"
echo         "RegisteredUser:   " ^& vbTab ^& objOS.RegisteredUser                          >> "%tmp_vbs_file%"
echo Next                                                                                   >> "%tmp_vbs_file%"
REM -----------------------------------------------------------------------------------------------------------
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" > "%sys_dir%\osinfo.list"
@del "%tmp_vbs_file%"

set tmp_vbs_file=%input_dir%\drmlog_hotfix.vbs
REM ---------------------------------------------------------------------------------------------------------------
echo Set colQuickFixes = GetObject("winmgmts:").InstancesOf("Win32_QuickFixEngineering")        >  "%tmp_vbs_file%"
echo WScript.Echo "Computer" ^& vbTab ^& "Description" ^& vbTab ^& "Hot Fix ID" ^& vbTab ^& _   >> "%tmp_vbs_file%"
echo              "Installation Date" ^& vbTab ^& "Installed By"                                >> "%tmp_vbs_file%"
echo For Each objQuickFix in colQuickFixes                                                      >> "%tmp_vbs_file%"
echo     Wscript.Echo objQuickFix.CSName ^& vbTab ^& objQuickFix.Description ^& vbTab ^& _      >> "%tmp_vbs_file%"
echo                  objQuickFix.HotFixID ^& vbTab ^& _                                        >> "%tmp_vbs_file%"
echo                  objQuickFix.InstallDate ^& vbTab ^& objQuickFix.InstalledBy               >> "%tmp_vbs_file%"
echo Next                                                                                       >> "%tmp_vbs_file%"
REM ---------------------------------------------------------------------------------------------------------------
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" > "%sys_dir%\hotfix.list"
@del "%tmp_vbs_file%"

REM *** Saving enviroment variables
@echo Saving enviroment variables.
set > "%sys_dir%\getenv.log"
REM *************************************************************


REM *************************************************************
REM *** Saving material of RAID management software
REM *************************************************************
@echo Saving material of RAID management software.
set HORCM_CONF_FILE="%SYSTEMROOT%\horcm*.conf"
set HORCC_MRCF=1

set CONF_RAID_DEFAULT_DAT=%BASE_INST_DIR%\conf\raid\DEFAULT.dat
IF NOT EXIST "%CONF_RAID_DEFAULT_DAT%" goto GET_RAIDMGR_INST_PATH_ERROR
set tmp_vbs_file=%input_dir%\horcminstpath.vbs
REM ------------------------------------------------------------------------------------
echo CONF_RAID_DEFAULT_DAT = WScript.Arguments(0)                    >  "%tmp_vbs_file%"
echo Set fs = WScript.CreateObject("Scripting.FileSystemObject")     >> "%tmp_vbs_file%"
echo If fs.FileExists(CONF_RAID_DEFAULT_DAT) = False Then            >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                             >> "%tmp_vbs_file%"
echo End If                                                          >> "%tmp_vbs_file%"
echo s_instpath = ""                                                 >> "%tmp_vbs_file%"
echo Set f = fs.OpenTextFile(CONF_RAID_DEFAULT_DAT, 1)               >> "%tmp_vbs_file%"
echo Do While (f.AtEndOfLine ^<^> True)                              >> "%tmp_vbs_file%"
echo     line = f.ReadLine                                           >> "%tmp_vbs_file%"
echo     If (Len(line) ^>= 12) Then                                  >> "%tmp_vbs_file%"
echo         If (StrComp(Left(line, 12), "INSTALLPATH=") = 0) Then   >> "%tmp_vbs_file%"
echo             s_instpath = Right(line, Len(line)-12)              >> "%tmp_vbs_file%"
echo             Exit Do                                             >> "%tmp_vbs_file%"
echo         End If                                                  >> "%tmp_vbs_file%"
echo     End If                                                      >> "%tmp_vbs_file%"
echo Loop                                                            >> "%tmp_vbs_file%"
echo f.Close                                                         >> "%tmp_vbs_file%"
echo If (StrComp(s_instpath, "") = 0) Then                           >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                             >> "%tmp_vbs_file%"
echo End If                                                          >> "%tmp_vbs_file%"
echo If (fs.FolderExists(s_instpath) = False) Then                   >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                             >> "%tmp_vbs_file%"
echo End If                                                          >> "%tmp_vbs_file%"
echo WScript.Echo s_instpath                                         >> "%tmp_vbs_file%"
echo WScript.Quit(0)                                                 >> "%tmp_vbs_file%"
REM ------------------------------------------------------------------------------------
set tmp_res_file=%input_dir%\horcminstpath.txt
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%CONF_RAID_DEFAULT_DAT%" > "%tmp_res_file%"
IF %ERRORLEVEL% == 0 (
    FOR /F "usebackq delims=" %%d IN ("%tmp_res_file%") DO set HORCM_INST_DIR=%%d
) ELSE (
    @del "%tmp_vbs_file%"
    @del "%tmp_res_file%"
    goto GET_RAIDMGR_INST_PATH_ERROR
)
@del "%tmp_vbs_file%"
@del "%tmp_res_file%"

set tmp_vbs_file=%input_dir%\horcminstnum.vbs
REM ----------------------------------------------------------------------------------------------------------------
echo CONF_RAID_DEFAULT_DAT = WScript.Arguments(0)                                                >  "%tmp_vbs_file%"
echo Set fs = WScript.CreateObject("Scripting.FileSystemObject")                                 >> "%tmp_vbs_file%"
echo If fs.FileExists(CONF_RAID_DEFAULT_DAT) = False Then                                        >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                                                         >> "%tmp_vbs_file%"
echo End If                                                                                      >> "%tmp_vbs_file%"
echo Set f = fs.OpenTextFile(CONF_RAID_DEFAULT_DAT, 1)                                           >> "%tmp_vbs_file%"
echo Do While (f.AtEndOfLine ^<^> True)                                                          >> "%tmp_vbs_file%"
echo     line = f.ReadLine                                                                       >> "%tmp_vbs_file%"
echo     If (Len(line) ^>= 10) Then                                                              >> "%tmp_vbs_file%"
echo         If (StrComp(Left(line, 10), "HORCMINST=") = 0) Then                                 >> "%tmp_vbs_file%"
echo             s_horcminst = Right(line, Len(line)-10)                                         >> "%tmp_vbs_file%"
echo             If (s_horcminst ^<^> "") Then                                                   >> "%tmp_vbs_file%"
echo                 For i = 0 To Len(s_horcminst)-1                                             >> "%tmp_vbs_file%"
echo                     If (IsNumeric(Right(Left(s_horcminst, i+1), 1)) = False) Then Exit For  >> "%tmp_vbs_file%"
echo                 Next                                                                        >> "%tmp_vbs_file%"
echo                 If (i = Len(s_horcminst)) Then                                              >> "%tmp_vbs_file%"
echo                     WScript.Echo s_horcminst                                                >> "%tmp_vbs_file%"
echo                 End If                                                                      >> "%tmp_vbs_file%"
echo             End If                                                                          >> "%tmp_vbs_file%"
echo         End If                                                                              >> "%tmp_vbs_file%"
echo     End If                                                                                  >> "%tmp_vbs_file%"
echo Loop                                                                                        >> "%tmp_vbs_file%"
echo f.Close                                                                                     >> "%tmp_vbs_file%"
echo WScript.Quit(0)                                                                             >> "%tmp_vbs_file%"
REM ----------------------------------------------------------------------------------------------------------------
set tmp_res_file=%input_dir%\horcminstnum.txt
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%CONF_RAID_DEFAULT_DAT%" > "%tmp_res_file%"
@del "%tmp_vbs_file%"

set horcm_dir=%input_dir%\horcm
IF NOT EXIST "%horcm_dir%"    mkdir "%horcm_dir%"

"%HORCM_INST_DIR%\etc\inqraid.exe" $Volume -CLI > "%horcm_dir%\raidinfo.list"
set tmp_status_file=%input_dir%\raidscanstatus.txt
set tmp_maxmu_file=%input_dir%\horcmmaxmu.txt
set tmp_error_file=%input_dir%\horcmerror.txt
FOR /F "usebackq delims=" %%i IN ("%tmp_res_file%") DO (
    echo HORCMINST = %%i >> "%horcm_dir%\raidinfo.list"
    "%HORCM_INST_DIR%\etc\raidscan.exe" -x setenv HORCMINST %%i -pi $Phy -CLI -find verify   >> "%horcm_dir%\raidinfo.list"

    echo 0 > "%tmp_error_file%"
    IF errorlevel 251 IF NOT errorlevel 252 echo 1 > "%tmp_error_file%"
  FOR /F "usebackq delims= " %%e IN ("%tmp_error_file%") DO (
   IF %%e == 0 (
    echo 0 > "%tmp_status_file%"
    echo 14 > "%tmp_maxmu_file%"
    FOR /L %%m IN (0,1,4095) DO (
        FOR /F "usebackq delims=" %%s IN ("%tmp_status_file%") DO (
            IF "%%s" == "0 " (
                "%HORCM_INST_DIR%\etc\raidscan.exe" -x setenv HORCMINST %%i -pi $Phy -CLI -find verify %%m >> "%horcm_dir%\raidinfo.list" 2> "%log_dir%\NULL"
                IF errorlevel 253 IF NOT errorlevel 254 (
                    echo 1 > "%tmp_status_file%"
                    echo %%m > "%tmp_maxmu_file%"
                )
            )
        )
    )
    @del "%tmp_status_file%"

    FOR /F "usebackq delims= " %%d IN (`"%HORCM_INST_DIR%\etc\inqraid.exe $Phy -CLI"`) DO (
        IF "%%d" NEQ "DEVICE_FILE" (
                FOR /F "usebackq delims= " %%k IN ("%tmp_maxmu_file%") DO (
                    FOR /L %%m IN (0,1,%%k) DO (
                        IF %%m NEQ %%k (
                            "%HORCM_INST_DIR%\etc\pairdisplay.exe" -x setenv HORCMINST %%i -d "%%d" %%m -CLI >> "%horcm_dir%\raidinfo.list" 2> "%log_dir%\NULL"
                        )
                    )
                )
        )
    )
    @del "%tmp_maxmu_file%"
   )
  )
  @del "%tmp_error_file%"
)
@del "%tmp_res_file%"
"%HORCM_INST_DIR%\etc\pairdisplay.exe" -x mount  >> "%horcm_dir%\raidinfo.list" 2> "%log_dir%\NULL"
xcopy /C  "%HORCM_CONF_FILE%"  "%horcm_dir%\" >> "%log_dir%\NULL" 2>&1

set HORCM_LOG_BASE_DIR=%HORCM_INST_DIR%
set HORCM_LOG_DIR=%HORCM_LOG_BASE_DIR%\log*
FOR /F "usebackq" %%d IN (`dir /AD /B "%HORCM_LOG_DIR%"`) DO (
    mkdir "%horcm_dir%\%%d"
    xcopy /E /C "%HORCM_LOG_BASE_DIR%\%%d" "%horcm_dir%\%%d" >> "%log_dir%\NULL" 2>&1
)
:HORCM_END
REM *************************************************************


REM *************************************************************
REM *** Saving material of Microsoft Cluster Service
REM *************************************************************
set MSCS_INST_DIR=%SystemRoot%\cluster
cluster /ver > nul 2>&1
IF %ERRORLEVEL% NEQ 0 goto MSCS_END

@echo Saving material of Microsoft Cluster Service
set mscs_dir=%input_dir%\mscs
IF NOT EXIST "%mscs_dir%" mkdir "%mscs_dir%"

xcopy /C "%MSCS_INST_DIR%\cluster.log"  "%mscs_dir%" >> "%log_dir%\NULL" 2>&1
xcopy /C "%MSCS_INST_DIR%\ChkDsk_*.log" "%mscs_dir%" >> "%log_dir%\NULL" 2>&1
set mscs_info_file=%mscs_dir%\mscsinfo.list
cluster          /ver           >  "%mscs_info_file%"
cluster          /list          >> "%mscs_info_file%"
cluster          /prop          >> "%mscs_info_file%"
cluster          /priv          >> "%mscs_info_file%"
cluster node     /stat          >> "%mscs_info_file%"
cluster node     /prop          >> "%mscs_info_file%"
cluster node     /priv          >> "%mscs_info_file%"
cluster group    /stat          >> "%mscs_info_file%"
cluster group    /prop          >> "%mscs_info_file%"
cluster group    /priv          >> "%mscs_info_file%"
cluster net      /stat          >> "%mscs_info_file%"
cluster net      /prop          >> "%mscs_info_file%"
cluster net      /priv          >> "%mscs_info_file%"
cluster netint   /stat          >> "%mscs_info_file%"
cluster netint   /prop          >> "%mscs_info_file%"
cluster netint   /priv          >> "%mscs_info_file%"
cluster resource /stat          >> "%mscs_info_file%"
cluster resource /prop          >> "%mscs_info_file%"
cluster resource /priv          >> "%mscs_info_file%"
cluster restype  /list          >> "%mscs_info_file%"
cluster restype  /prop          >> "%mscs_info_file%"
cluster restype  /priv          >> "%mscs_info_file%"
cluster restype  /listowners    >> "%mscs_info_file%"
:MSCS_END
REM *************************************************************


REM *************************************************************
REM *** Saving Microsoft SQL Server Log
REM *************************************************************
IF %WINVER% == 2000 (
        set REG_KEY_SQL_DEFAULT=SOFTWARE\Microsoft\MSSQLServer
        set REG_KEY_SQL_ELSEINST=SOFTWARE\Microsoft\Microsoft SQL Server
) ELSE IF %WINVER% == 2003 (
    IF %WINBIT% == 32 (
        set REG_KEY_SQL_DEFAULT=SOFTWARE\Microsoft\MSSQLServer
        set REG_KEY_SQL_ELSEINST=SOFTWARE\Microsoft\Microsoft SQL Server
    ) ELSE IF %WINBIT% == 6432 (
        set REG_KEY_SQL_DEFAULT=SOFTWARE\Wow6432Node\Microsoft\MSSQLServer
        set REG_KEY_SQL_ELSEINST=SOFTWARE\Wow6432Node\Microsoft\Microsoft SQL Server
    )
)

set BASE_CONF_MSSQL_DIR=%BASE_INST_DIR%\conf\MSSQL
IF NOT EXIST "%BASE_CONF_MSSQL_DIR%" goto MSSQL_END

@echo Saving Microsoft SQL Server Log.
set mssql_dir=%input_dir%\mssql
IF NOT EXIST "%mssql_dir%" mkdir "%mssql_dir%"

set tmp_vbs_file=%input_dir%\sqlinstance.vbs
REM ---------------------------------------------------------------------------------------
echo BASE_CONF_MSSQL_DIR = WScript.Arguments(0)                         >> "%tmp_vbs_file%"
echo Set fs = WScript.CreateObject("Scripting.FileSystemObject")        >> "%tmp_vbs_file%"
echo If fs.FolderExists(BASE_CONF_MSSQL_DIR) Then                       >> "%tmp_vbs_file%"
echo     Set folder   = fs.GetFolder(BASE_CONF_MSSQL_DIR)               >> "%tmp_vbs_file%"
echo     Set fileList = folder.Files                                    >> "%tmp_vbs_file%"
echo     For Each file In fileList                                      >> "%tmp_vbs_file%"
echo         If (Len(file.Name) ^> 4) Then                              >> "%tmp_vbs_file%"
echo             If (StrComp(Right(file.Name, 4), ".dat") = 0) Then     >> "%tmp_vbs_file%"
echo                 WScript.Echo Left(file.Name, Len(file.Name)-4)     >> "%tmp_vbs_file%"
echo             End If                                                 >> "%tmp_vbs_file%"
echo         End If                                                     >> "%tmp_vbs_file%"
echo     Next                                                           >> "%tmp_vbs_file%"
echo End If                                                             >> "%tmp_vbs_file%"
REM ---------------------------------------------------------------------------------------
set tmp_ins_file=%input_dir%\sqlinstance.txt
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%BASE_CONF_MSSQL_DIR%" > "%tmp_ins_file%"
@del "%tmp_vbs_file%"

set tmp_vbs_file=%input_dir%\sqlregkey.vbs
REM -----------------------------------------------------------------------------------------------------------------------------
echo Const HKEY_LOCAL_MACHINE = ^&H80000002                                                                   >  "%tmp_vbs_file%"
echo sSubKeyName = WScript.Arguments(0)                                                                       >> "%tmp_vbs_file%"
echo Set objStdRegProv = GetObject("winmgmts:root\default:StdRegProv")                                        >> "%tmp_vbs_file%"
echo retVal = objStdRegProv.EnumValues(HKEY_LOCAL_MACHINE, sSubKeyName, sNames, iTypes)                       >> "%tmp_vbs_file%"
echo If (retVal ^<^> 0) Then WScript.Quit(1)                                                                  >> "%tmp_vbs_file%"
echo findLogPath = 0                                                                                          >> "%tmp_vbs_file%"
echo For i = LBound(sNames) To UBound(sNames)                                                                 >> "%tmp_vbs_file%"
echo     If (StrComp(sNames(i), "SQLDataRoot", 1) = 0) Then                                                   >> "%tmp_vbs_file%"
echo         retVal = objStdRegProv.GetStringValue(HKEY_LOCAL_MACHINE, sSubKeyName, sNames(i), LogFilePath)   >> "%tmp_vbs_file%"
echo         WScript.Echo LogFilePath                                                                         >> "%tmp_vbs_file%"
echo         findLogPath = 1                                                                                  >> "%tmp_vbs_file%"
echo     End If                                                                                               >> "%tmp_vbs_file%"
echo Next                                                                                                     >> "%tmp_vbs_file%"
echo If (findLogPath = 1) Then                                                                                >> "%tmp_vbs_file%"
echo     WScript.Quit(0)                                                                                      >> "%tmp_vbs_file%"
echo Else                                                                                                     >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                                                                      >> "%tmp_vbs_file%"
echo End If                                                                                                   >> "%tmp_vbs_file%"
REM -----------------------------------------------------------------------------------------------------------------------------
set tmp_key_file=%input_dir%\sqlregkey.txt
set tmp_dir_file=%input_dir%\sqldatadir.txt
FOR /F "usebackq delims=" %%n IN ("%tmp_ins_file%") DO (
    IF /I "%%n" == "DEFAULT" (
        echo %REG_KEY_SQL_DEFAULT%\Setup> "%tmp_key_file%"
    ) ELSE (
        echo %REG_KEY_SQL_ELSEINST%\%%n\Setup> "%tmp_key_file%"
    )
    FOR /F "usebackq delims=" %%r IN ("%tmp_key_file%") DO ( CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%%r" > "%tmp_dir_file%" )
    FOR /F "usebackq delims=" %%d IN ("%tmp_dir_file%") DO (
        mkdir "%mssql_dir%\%%n\LOG"
        xcopy /E /C "%%d\LOG" "%mssql_dir%\%%n\LOG" >> "%log_dir%\NULL" 2>&1
    )
    @del "%tmp_key_file%"
    @del "%tmp_dir_file%" 2> nul
)
@del "%tmp_ins_file%"
@del "%tmp_vbs_file%"

:MSSQL_END
REM *************************************************************


REM *************************************************************
REM *** Saving Microsoft Exchange Log
REM *************************************************************
IF %WINVER% == 2000 (
        set EXG_SETUP_REG_KEY="SOFTWARE\Microsoft\Exchange\Setup"
) ELSE IF %WINVER% == 2003 (
    IF %WINBIT% == 32 (
        set EXG_SETUP_REG_KEY="SOFTWARE\Microsoft\Exchange\Setup"
    ) ELSE IF %WINBIT% == 6432 (
        set EXG_SETUP_REG_KEY="SOFTWARE\Wow6432Node\Microsoft\Exchange\Setup"
    )
)
set tmp_vbs_file=%input_dir%\exginstpath.vbs
REM ---------------------------------------------------------------------------------------------------------------------------------
echo Const HKEY_LOCAL_MACHINE = ^&H80000002                                                                       >  "%tmp_vbs_file%"
echo Set objStdRegProv = GetObject("winmgmts:root\default:StdRegProv")                                            >> "%tmp_vbs_file%"
echo regKeyExgSetup = WScript.Arguments(0)                                                                        >> "%tmp_vbs_file%"
echo retVal = objStdRegProv.EnumValues(HKEY_LOCAL_MACHINE, regKeyExgSetup, subNames, subTypes)                    >> "%tmp_vbs_file%"
echo If (retVal ^<^> 0) Then WScript.Quit(1)                                                                      >> "%tmp_vbs_file%"
echo findLogPath  = 0                                                                                             >> "%tmp_vbs_file%"
echo For i = LBound(subNames) To UBound(subNames)                                                                 >> "%tmp_vbs_file%"
echo    If (StrComp(subNames(i), "ExchangeServerAdmin", 1) = 0) Then                                              >> "%tmp_vbs_file%"
echo        retVal = objStdRegProv.GetStringValue(HKEY_LOCAL_MACHINE, regKeyExgSetup, subNames(i), ExgInstPath)   >> "%tmp_vbs_file%"
echo        If (retVal = 0) Then findLogPath = 1                                                                  >> "%tmp_vbs_file%"
echo    End If                                                                                                    >> "%tmp_vbs_file%"
echo Next                                                                                                         >> "%tmp_vbs_file%"
echo If (findLogPath = 1) Then                                                                                    >> "%tmp_vbs_file%"
echo     WScript.Echo ExgInstPath                                                                                 >> "%tmp_vbs_file%"
echo     WScript.Quit(0)                                                                                          >> "%tmp_vbs_file%"
echo Else                                                                                                         >> "%tmp_vbs_file%"
echo     WScript.Quit(1)                                                                                          >> "%tmp_vbs_file%"
echo End If                                                                                                       >> "%tmp_vbs_file%"
REM ---------------------------------------------------------------------------------------------------------------------------------
set tmp_res_file=%input_dir%\exginstpath.txt
CScript.exe //Nologo //E:VBScript "%tmp_vbs_file%" "%EXG_SETUP_REG_KEY%" > "%tmp_res_file%"
IF %ERRORLEVEL% NEQ 0 goto MSEXG_END

@echo Saving Microsoft Exchange Log.
set msexg_dir=%input_dir%\msexg
FOR /F "usebackq delims=" %%d IN ("%tmp_res_file%") DO set MSEXG_INST_DIR=%%d
IF NOT EXIST "%msexg_dir%\%COMPUTERNAME%.log"           mkdir "%msexg_dir%\%COMPUTERNAME%.log"
xcopy /E /C  "%MSEXG_INST_DIR%\%COMPUTERNAME%.log"   "%msexg_dir%\%COMPUTERNAME%.log"   >> "%log_dir%\NULL" 2>&1

:MSEXG_END
@del "%tmp_vbs_file%"
@del "%tmp_res_file%"
REM *************************************************************


REM *************************************************************
REM *** End Proc
REM *************************************************************
@del "%log_dir%\NULL"
echo Please compress this directory("%input_dir%"), and send it. 
GOTO END

:BASE_LOG_DIR_ERROR
@echo There is no directory %BASE_LOG_DIR%.
GOTO NO_EXIST_MESSAGE
:BASE_TMP_DIR_ERROR
@echo There is no directory %BASE_TMP_DIR%
GOTO NO_EXIST_MESSAGE
:BASE_ISAM_DIR_ERROR
@echo There is no directory "%BASE_ISAM_DIR%"
GOTO NO_EXIST_MESSAGE
:BASE_CONF_DIR_ERROR
@echo There is no directory %BASE_CONF_DIR%
GOTO NO_EXIST_MESSAGE
:BASE_SCR_DIR_ERROR
@echo There is no directory %BASE_SCR_DIR%
GOTO NO_EXIST_MESSAGE
:HORCM_LOG_DIR_ERROR
@echo There is no directory %HORCM_LOG_DIR%
GOTO NO_EXIST_MESSAGE
:MSSQL_DIR_ERROR
@echo There is no directory %MSSQL_INST_DIR%
GOTO NO_EXIST_MESSAGE
:MSEXG_DIR_ERROR
@echo There is no directory %MSEXG_INST_DIR%
GOTO NO_EXIST_MESSAGE
:GET_RAIDMGR_INST_PATH_ERROR
@echo Could not get the installation path of RAID management software
GOTO NO_EXIST_MESSAGE
:NO_EXIST_MESSAGE
@echo Please check setting value
GOTO END
:GET_HPTM_INST_PATH_ERROR
@echo Could not get the installation path of HPTM
GOTO MESSAGE
:GET_WIN_VER_ERR
@echo Could not get the information of Windows
GOTO MESSAGE

:ERROR
@echo Please specify saving directory.
GOTO END

:MESSAGE
@echo Termination of saving
GOTO END

:END
