@echo off
SETLOCAL enabledelayedexpansion
REM ###(Winodws10用)
REM ###
REM ### AutoInstall_Operator.bat
REM ###
REM ### 保守員がセキュリティPatch適用自動化ツールを初回起動するBatchファイル
REM ###
REM ### 保守員によりセキュリティPatch適用自動化ツールを初回起動する。
REM ### 前回起動時のAutoInstall.batの終了状態が不明なため、Clear_File.bat及び
REM ### AutoInstall.batを起動する。
REM ###

REM ### 事前チェックのOS(Windows10)を設定する
set OS=Windows10

REM ### 定義用変数(編集不要)
set Windows10_VERSION="Version 10.0"
set Windows7_VERSION="Version 6.1"

REM ###
REM ### メッセージ一覧
REM ###
set MSG-INI-001-I="MSG-INI-001-I-Security Patch Installation Tool has been started. SVP reboots several time in the process of the Security Patch Installation Tool."
set MSG-INI-029-E="MSG-INI-029-E-[Error] Failed to create required folder."
set MSG-INI-030-I="MSG-INI-030-I-##### Start AutoInstall_Operator.bat #####"
set MSG-END-008-E="MSG-END-008-E-[Error END] Security Patch Installation Tool is error end."
set MSG-COM-002-I="MSG-COM-002-I-This window is closed by pushing down an Enter key."
set MSG-COM-009-E="MSG-COM-009-E-[Error] A required file can not be found."
set MSG-COM-010-I="MSG-COM-010-I-[Start] Start Windows event log collection."
set MSG-COM-011-I="MSG-COM-011-I-[Collection SUCCESS] Windows event log collection succeeded."
set MSG-COM-012-E="MSG-COM-012-E-[Collection FAILED] Windows event log collection failed."
set MSG-COM-013-I="MSG-COM-013-I-Delete Windows event log."
set MSG-COM-014-I="MSG-COM-014-I-Collect Windows Application event log files."
set MSG-COM-015-I="MSG-COM-015-I-Collect Windows Setup event log file."
set MSG-COM-016-I="MSG-COM-016-I-Collect Windows System event log file."
set MSG-COM-017-E="MSG-COM-017-E-Failed to collect Windows event log file."
set MSG-COM-018-E="MSG-COM-018-E-Failed to start Log_Collection.bat."
set MSG-COM-019-E="MSG-COM-019-E-An error occurred in Log_Collection.bat."
set MSG-COM-020-I="MSG-COM-020-I-##### Start Log_Collection_Operator.bat #####"
set MSG-COM-021-I="MSG-COM-021-I-##### Start Log_Collection.bat #####"

REM ###
REM ### ファイルを格納するフォルダ
REM ###
set DIR_FLAG=C:\DKC200\others\mssp\flag\
set DIR_BATCH=C:\DKC200\others\mssp\batch\
set DIR_LOG=C:\DKC200\others\mssp\log\

REM ###
REM ### コンソール出力制御フラグ
REM ###
set CONSOLE_OFF=0
set CONSOLE_ON=1

REM
REM ログフォルダ作成
REM
if not exist %DIR_LOG% (
	mkdir %DIR_LOG% 2>nul
	if !errorlevel! == 0 (
		goto LOOPEND3
	)
	echo %MSG-INI-029-E%
	echo %MSG-END-008-E%
	echo %MSG-COM-002-I%
	pause > nul 2>&1
	exit
)
:LOOPEND3

REM ###
REM ### AutoInstall_Operator.bat起動開始
REM ###
call :LOG_OUT %MSG-INI-030-I% %CONSOLE_OFF%
call :LOG_OUT %MSG-INI-001-I% %CONSOLE_ON%
echo %~dp0 >> %DIR_LOG%AutoInstall_log.txt

REM ###
REM ### メッセージの環境変数設定
REM ###
set MSGFILE=%~dp0Message_File\message.ini

REM ###
REM ### メッセージ読み込みチェック
REM ###
set MSG_READ_CHECK="***** Message Last Line *****"

REM ### 設定ファイルが存在するか確認する
if not exist %MSGFILE% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %MSGFILE% >> %DIR_LOG%AutoInstall_log.txt
	goto ERROR_END
)

REM ### 設定ファイルを読み込む
for /f "usebackq tokens=1,* delims==" %%a in ("%MSGFILE%") do (
	set %%a=%%b
)

REM 環境変数登録チェック
IF DEFINED MSG-ZZZ-ZZZ-Z (
	REM ### 設定値チェック
	if !MSG-ZZZ-ZZZ-Z! neq !MSG_READ_CHECK! (
		call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
		echo %MSGFILE% >> %DIR_LOG%AutoInstall_log.txt
		goto ERROR_END
	)
) else (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %MSGFILE% >> %DIR_LOG%AutoInstall_log.txt
	goto ERROR_END
)

REM ###
REM ### OS事前チェック
REM ###

REM ### ログファイル出力
call :LOG_OUT %MSG-INI-004-I% %CONSOLE_OFF%
call set OS_VERSION=%%%OS%_VERSION%%
ver | find %OS_VERSION%>nul
if %ERRORLEVEL%==1 (
	call :LOG_OUT %MSG-INI-005-E% %CONSOLE_ON%
	call :LOG_OUT %MSG-COM-002-I% %CONSOLE_ON%
	pause > nul 2>&1
	exit
)

REM
REM フラグフォルダ作成
REM
if not exist %DIR_FLAG% (
	mkdir %DIR_FLAG% 2>> %DIR_LOG%AutoInstall_log.txt 2>>&1
	if !errorlevel! == 0 (
		goto LOOPEND1
	)
	call :LOG_OUT %MSG-INI-029-E% %CONSOLE_OFF%
	goto ERROR_END
)
:LOOPEND1

REM
REM BATCHフォルダ作成
REM
if not exist %DIR_BATCH% (
	mkdir %DIR_BATCH% 2>> %DIR_LOG%AutoInstall_log.txt 2>>&1
	if !errorlevel! == 0 (
		goto LOOPEND2
	)
	call :LOG_OUT %MSG-INI-029-E% %CONSOLE_OFF%
	goto ERROR_END
)
:LOOPEND2

REM ###
REM ### ファイルクリアBatch実行
REM ###
REM ### 存在チェック
set BATCH_CLEAR_FILE=%~dp0Batch_File\Clear_File.bat
if not exist %BATCH_CLEAR_FILE% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_CLEAR_FILE% >> %DIR_LOG%AutoInstall_log.txt
	goto ERROR_END
)

call %BATCH_CLEAR_FILE% 2>nul
if !errorlevel! == 0 (
	goto LOOPEND4
) else if !errorlevel! == 2 (
	goto ERROR_END
)

call :LOG_OUT %MSG-INI-025-E% %CONSOLE_OFF%
goto ERROR_END

:LOOPEND4

REM ###
REM ### セキュリティPatch適用自動化ツールBatch実行
REM ###
REM ### 存在チェック
set BATCH_AUTOINSTALL=%~dp0Batch_File\AutoInstall.bat
if not exist %BATCH_AUTOINSTALL% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_AUTOINSTALL% >> %DIR_LOG%AutoInstall_log.txt
	goto ERROR_END
)

REM start %BATCH_AUTOINSTALL%  2>nul
PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command  2>nul "Start-Process %BATCH_AUTOINSTALL% -Verb runas"
REM ### AutoInstall.bat起動後、本バッチを終了する
exit

REM ###
REM ### 終了
REM ###
:ERROR_END
REM ### Windows イベントログ収集
call :LOG_COLLECTION
REM ### エラー終了
call :LOG_OUT %MSG-END-008-E% %CONSOLE_ON%
call :LOG_OUT %MSG-COM-002-I% %CONSOLE_ON%
pause > nul 2>&1

exit


REM ###############################################
REM ###
REM ### 	Windows イベントログ収集
REM ###
REM ###############################################
:LOG_COLLECTION

REM ### Windows イベントログ収集
REM ### 存在チェック
REM ### Windowsイベントログ収集開始
call :LOG_OUT %MSG-COM-021-I% %CONSOLE_OFF%
call :LOG_OUT %MSG-COM-010-I% %CONSOLE_ON%

set BATCH_LOG_COLLECTION=%~dp0Batch_File\Log_Collection.bat
if exist %BATCH_LOG_COLLECTION% (
	call %BATCH_LOG_COLLECTION% 2>nul
	set BAT_ERROR=!errorlevel!
	if !BAT_ERROR! == 0 (
		call :LOG_OUT %MSG-COM-011-I% %CONSOLE_ON%
 	) else if !BAT_ERROR! == 1 (
		call :LOG_OUT %MSG-COM-018-E% %CONSOLE_OFF%
		call :LOG_OUT %MSG-COM-012-E% %CONSOLE_ON%
 	) else (
		call :LOG_OUT %MSG-COM-019-E% %CONSOLE_OFF%
		call :LOG_OUT %MSG-COM-012-E% %CONSOLE_ON%
	)
) else (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_LOG_COLLECTION% >> %DIR_LOG%AutoInstall_log.txt
)

exit /b 0


REM ###############################################
REM ###
REM ### メッセージ出力
REM ###
REM ### 引数
REM ### %1:メッセージ
REM ### %2:コンソール出力スイッチ（CONSOLE_OFF:0 CONSOLE_ON:1）
REM ###
REM ###############################################
:LOG_OUT

REM ### コンソールにメッセージ出力チェック
if %CONSOLE_ON%==%2 (
	REM ### コンソール出力
	set MSGMK1=%1
	set MSGMK2=!MSGMK1:~15!
	set MSGMK3=!MSGMK2:~0,-1!
	echo !MSGMK3!
)

REM ### ログファイル出力
echo [%date%-%time%] %~1 >> %DIR_LOG%AutoInstall_log.txt

exit /b 0
ENDLOCAL enabledelayedexpansion
