
@echo off
REM ### Windows10用
REM ###
REM ### AutoInstall.bat
REM ###
REM ### セキュリティPatch適用自動化ツールBatchファイル
REM ###
REM ###

SETLOCAL enabledelayedexpansion
REM ### 事前チェック論理ではechoをオフする
REM ### 事前チェックの機種(RAID800/HM700)、OS(Windows10)を設定する
set MODEL_CHK=RAID800
set MODEL=RAID800/RAID850
set OS=Windows10

REM ### 定義用変数(編集不要)
set Windows10_VERSION="Version 10.0"
set Windows7_VERSION="Version 6.1"
set RAID800_VERSION=80
set RAID700_VERSION=70
set HM700_VERSION=[7][35]
set PCINF=C:\DKC200\mp\pc\pc.inf

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\
set DIR_STARTUP="%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"

REM ###
REM ### 処理状態フラグファイル
REM ###
set PREFLAG=%DIR_FLAG%PreFlag
set SSUFLAG=%DIR_FLAG%SSUFlag
set NEWFLAG=%DIR_FLAG%NewFlag
set RETRYFLAG=%DIR_FLAG%RetryFlag
set PENDINGFLAG=%DIR_FLAG%PendingFlag
set NMLENDFLAG=%DIR_FLAG%NmlEndFlag
set ERRENDFLAG=%DIR_FLAG%ErrEndFlag

REM ###
REM ### 実行ログファイル
REM ###
set AUTOINSTALL_LOG=%DIR_LOG%AutoInstall_log.txt
set INSTALL_STATE_LIST=%DIR_LOG%Install_State_list.txt

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

REM ###
REM ### カレントフォルダ取得
REM ### AutoInstall.bat起動フォルダの
REM ### 一つ上のフォルダのパス取得
REM ###
set A=%~dp0
set A=%A:~0,-2%
for %%A in (%A%) do set A=%%~dpA
REM echo %A%
set MEDIA_CURRENT=%A%
REM echo MEDIA_CURRENT %MEDIA_CURRENT%

REM ###
REM ### メディア内のフォルダ
REM ###
set SSU_FOLDER=%MEDIA_CURRENT%SSU\
set NEW_FOLDER=%MEDIA_CURRENT%FC_Patch\
set REG_FILE_FOLDER=%MEDIA_CURRENT%Reg_File\
set BATCH_FILE_FOLDER=%MEDIA_CURRENT%Batch_File\

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

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-002-I="MSG-INI-002-I-MODEL(%MODEL%)"
set MSG-INI-003-E="MSG-INI-003-E-[Model Error] This SVP is not %MODEL%. Please insert the correct media."
set MSG-INI-004-I="MSG-INI-004-I-OS(%OS%)"
set MSG-INI-005-E="MSG-INI-005-E-[OS Version Error] OS version of this SVP is not %OS%. Please select the correct OS version."
set MSG-INI-038-I="MSG-INI-038-I-##### Start AutoInstall.bat #####"
set MSG-PEN-001-I="MSG-PEN-001-I-Pending.xml exists."
set MSG-PEN-002-I="MSG-PEN-002-I-Pending.xml does not exist."
set MSG-PEN-015-I="MSG-PEN-015-I-Pending.xml file Deletion starts."
set MSG-PEN-016-W="MSG-PEN-016-W-[Start] Security patch Begins repairing application failure."
set MSG-PEN-017-I="MSG-PEN-017-I-The pending flag was set."
set MSG-PEN-019-E="MSG-PEN-019-E-Failed to start Delete_Pending.bat."
set MSG-PEN-020-E="MSG-PEN-020-E-Failed to start Delete_Pending_reg.bat."
set MSG-PEN-021-E="MSG-PEN-021-E-Failed to generate pending flag."
set MSG-PEN-024-E="MSG-PEN-024-E-REG LOAD of HKLM\COMPONENTS failed."
set MSG-PEN-025-E="MSG-PEN-025-E-HKLM\COMPONENTS did not exist."
set MSG-PEN-026-E="MSG-PEN-026-E-REG IMPORT UnRegister-DeletePending.reg failed."
set MSG-PEN-027-E="MSG-PEN-027-E-REG UNLOAD HKLM\COMPONENTS failed."
set MSG-PEN-028-E="MSG-PEN-028-E-An error occurred in Delete_Pending.bat."
set MSG-PEN-030-E="MSG-PEN-030-E-Pending Registry exists."
set MSG-END-001-I="MSG-END-001-I-[Install Completed] All security patch has been applied."
set MSG-END-007-I="MSG-END-007-I-[Normal END] Security Patch Installation Tool completed successfully."
set MSG-END-008-E="MSG-END-008-E-[Error END] Security Patch Installation Tool is error end."
set MSG-END-009-E="MSG-END-009-E-Failed to start Clear_File.bat."
set MSG-END-021-I="MSG-END-021-I-The Normal End flag was set."
set MSG-END-022-E="MSG-END-022-E-Failed to generate Normal End flag."
set MSG-END-023-I="MSG-END-023-I-Perform repair of security patch application failure in Normal End processing."
set MSG-END-024-I="MSG-END-024-I-The Error End flag was set."
set MSG-END-025-E="MSG-END-025-E-Failed to generate Error End flag."
set MSG-END-026-I="MSG-END-026-I-Perform repair of security patch application failure in Error End processing."
set MSG-END-029-I="MSG-END-029-I-Normal End flag exists."
set MSG-END-030-I="MSG-END-030-I-##### Start AutoInstall.bat NORMAL_END #####"
set MSG-END-031-I="MSG-END-031-I-##### Start AutoInstall.bat NORMAL2_END #####"
set MSG-END-032-I="MSG-END-032-I-##### Start AutoInstall.bat ERROR_END #####"
set MSG-END-033-I="MSG-END-033-I-##### Start AutoInstall.bat ERROR2_END #####"
set MSG-COM-002-I="MSG-COM-002-I-This window is closed by pushing down an Enter key."
set MSG-COM-003-I="MSG-COM-003-I-Press Enter key to reboot."
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-021-I="MSG-COM-021-I-##### Start Log_Collection.bat #####"

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

REM ###
REM ### セキュリティパッチ適用自動化ツール開始（1-1）
REM ###
call :LOG_OUT %MSG-INI-038-I% %CONSOLE_OFF%
call :LOG_OUT %MSG-INI-001-I% %CONSOLE_ON%

REM 設定ファイルが存在するか確認する
if not exist %MSGFILE% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %MSGFILE% >> %AUTOINSTALL_LOG%
	goto ERROR2_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% >> %AUTOINSTALL_LOG%
		goto ERROR2_END
	)
) else (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %MSGFILE% >> %AUTOINSTALL_LOG%
	goto ERROR2_END
)

REM ###
REM ### 機種事前チェック（1-2）
REM ###

REM ### ログファイル出力
call :LOG_OUT %MSG-INI-002-I% %CONSOLE_OFF%

if exist %PCINF% (
	call set MODEL_VERSION=%%%MODEL_CHK%_VERSION%%
	findstr "\<!MODEL_VERSION!" %PCINF%>nul
	if !ERRORLEVEL!==1 (
		call :LOG_OUT %MSG-INI-003-E% %CONSOLE_ON%
		call :LOG_OUT %MSG-COM-002-I% %CONSOLE_ON%
		pause > nul 2>&1
		exit
	)
)

REM ###
REM ### OS事前チェック（1-3）
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 ### workファイル
REM ###
set CHECKRESULT=%DIR_LOG%CheckResult.txt

REM ###
REM ### Batchファイル
REM ###
set AUTOINSTALL_STARTUP=%DIR_BATCH%AutoInstall_StartUp.bat

REM ###
REM ### StartUp起動用のBatchファイルのショートカット
REM ###
set AUTOINSTALL_STARTUP_SHORTCUT=%DIR_STARTUP%AutoInstall_StartUp.bat - Shortcut.lnk

REM ###
REM ### CheckTool.bat実行結果確認メッセージ
REM ###
set CHECKTOOLRESULTOK="The patches are applied successfully."

REM ###
REM ### SVPログイン画面に複数アカウント表示チェック用レジストリ
REM ###
set CHECK_CREDENTIAL_PROVIDOR=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\Credential Providers\{60b78e88-ead8-445c-9cfd-0b87f74ea6cd}"

REM ###
REM ### pending.xmlファイル
REM ###
set PENDINGXMLFILE=C:\Windows\WinSxS\pending.xml.*

REM ###
REM ### AutoInstall_StartUp.bat作成チェック用
REM ### AutoInstall_StartUp.batの最後の行が
REM ### 書き込まれているかチェックする。
REM ###
set WRITE_SUCCESS="REM ### Write success ###"

REM ###
REM ### AutoInstall_StartUp.bat作成（1-7）
REM ###
REM ### AutoInstall_StartUp.batをメディアから
REM ### C:\DKC200\others\mssp\batchにコピー

call :LOG_OUT %MSG-INI-017-I% %CONSOLE_OFF%

copy %BATCH_FILE_FOLDER%AutoInstall_StartUp.bat %DIR_BATCH% >> %AUTOINSTALL_LOG% 2>>&1
if !errorlevel! == 0 (
	goto LOOPEND1
)
call :LOG_OUT %MSG-INI-021-E% %CONSOLE_OFF%
goto ERROR2_END
:LOOPEND1

REM ###
REM ### AutoInstall_StartUp.batにAutoInstall.batの起動処理を書き込む
REM ###
echo REM ### セキュリティPatch適用自動化ツール存在チェック>> %AUTOINSTALL_STARTUP%
echo if not exist %BATCH_FILE_FOLDER%AutoInstall.bat ( >> %AUTOINSTALL_STARTUP%
echo 	call :LOG_COLLECTION>> %AUTOINSTALL_STARTUP%
echo 	call :LOG_OUT %MSG-INI-016-E% %%CONSOLE_ON%%>> %AUTOINSTALL_STARTUP%
echo 	call :LOG_OUT %MSG-COM-004-I% %%CONSOLE_ON%%>> %AUTOINSTALL_STARTUP%
echo 	pause ^> nul 2^>^&1 >> %AUTOINSTALL_STARTUP%
echo 	exit >> %AUTOINSTALL_STARTUP%
echo )>> %AUTOINSTALL_STARTUP%
echo. >> %AUTOINSTALL_STARTUP%
echo REM ### セキュリティPatch適用自動化ツール実行>> %AUTOINSTALL_STARTUP%
REM echo start %BATCH_FILE_FOLDER%AutoInstall.bat>> %AUTOINSTALL_STARTUP%
echo PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command 2>nul "Start-Process %BATCH_FILE_FOLDER%AutoInstall.bat -Verb runas">> %AUTOINSTALL_STARTUP%
echo exit >> %AUTOINSTALL_STARTUP%
echo.  >> %AUTOINSTALL_STARTUP%
echo REM ############################################### >> %AUTOINSTALL_STARTUP%
echo REM ### >> %AUTOINSTALL_STARTUP%
echo REM ### 	Windows イベントログ収集 >> %AUTOINSTALL_STARTUP%
echo REM ### >> %AUTOINSTALL_STARTUP%
echo REM ############################################### >> %AUTOINSTALL_STARTUP%
echo :LOG_COLLECTION >> %AUTOINSTALL_STARTUP%
echo.  >> %AUTOINSTALL_STARTUP%
echo REM ### Windows イベントログ収集 >> %AUTOINSTALL_STARTUP%
echo REM ### 存在チェック >> %AUTOINSTALL_STARTUP%
echo REM ### Windowsイベントログ収集開始 >> %AUTOINSTALL_STARTUP%
echo call :LOG_OUT %MSG-COM-021-I% %%CONSOLE_OFF%% >> %AUTOINSTALL_STARTUP%
echo call :LOG_OUT %MSG-COM-010-I% %%CONSOLE_ON%% >> %AUTOINSTALL_STARTUP%
echo.  >> %AUTOINSTALL_STARTUP% >> %AUTOINSTALL_STARTUP%
echo if exist %BATCH_FILE_FOLDER%Log_collection.bat ( >> %AUTOINSTALL_STARTUP%
echo 	call %BATCH_FILE_FOLDER%Log_collection.bat 2^>nul >> %AUTOINSTALL_STARTUP%
echo 	set BAT_ERROR=^^!errorlevel^^!>> %AUTOINSTALL_STARTUP%
echo 	if ^^!BAT_ERROR^^! == 0 ( >> %AUTOINSTALL_STARTUP%
echo 		call :LOG_OUT %MSG-COM-011-I% %%CONSOLE_ON%% >> %AUTOINSTALL_STARTUP%
echo  	) else if ^^!BAT_ERROR^^! == 1 ( >> %AUTOINSTALL_STARTUP%
echo 		call :LOG_OUT %MSG-COM-018-E% %%CONSOLE_OFF%% >> %AUTOINSTALL_STARTUP%
echo 		call :LOG_OUT %MSG-COM-012-E% %%CONSOLE_ON%% >> %AUTOINSTALL_STARTUP%
echo  	) else ( >> %AUTOINSTALL_STARTUP%
echo 		call :LOG_OUT %MSG-COM-019-E% %%CONSOLE_OFF%% >> %AUTOINSTALL_STARTUP%
echo 		call :LOG_OUT %MSG-COM-012-E% %%CONSOLE_ON%% >> %AUTOINSTALL_STARTUP%
echo 	) >> %AUTOINSTALL_STARTUP%
echo ) else ( >> %AUTOINSTALL_STARTUP%
echo 	call :LOG_OUT %MSG-COM-009-E% %%CONSOLE_ON%% >> %AUTOINSTALL_STARTUP%
echo 	echo ^^!BATCH_LOG_COLLECTION^^! ^>^> %%AUTOINSTALL_LOG%% >> %AUTOINSTALL_STARTUP%
echo ) >> %AUTOINSTALL_STARTUP%
echo.  >> %AUTOINSTALL_STARTUP%
echo exit /b 0 >> %AUTOINSTALL_STARTUP%
echo.  >> %AUTOINSTALL_STARTUP%
echo REM ############################################### >> %AUTOINSTALL_STARTUP%
echo REM ### >> %AUTOINSTALL_STARTUP%
echo REM ### メッセージ出力 >> %AUTOINSTALL_STARTUP%
echo REM ### >> %AUTOINSTALL_STARTUP%
echo REM ### 引数 >> %AUTOINSTALL_STARTUP%
echo REM ### %%1:メッセージ >> %AUTOINSTALL_STARTUP%
echo REM ### %%2:コンソール出力スイッチ（CONSOLE_OFF:0 CONSOLE_ON:1）>> %AUTOINSTALL_STARTUP%
echo REM ### >> %AUTOINSTALL_STARTUP%
echo REM ############################################### >> %AUTOINSTALL_STARTUP%
echo :LOG_OUT >> %AUTOINSTALL_STARTUP%
echo.  >> %AUTOINSTALL_STARTUP%
echo REM ### コンソールにメッセージ出力チェック >> %AUTOINSTALL_STARTUP%
echo if %%CONSOLE_ON%%==%%2 ( >> %AUTOINSTALL_STARTUP%
echo 	REM ### コンソール出力 >> %AUTOINSTALL_STARTUP%
echo 	set MSGMK1=%%1 >> %AUTOINSTALL_STARTUP%
echo 	set MSGMK2=^^!MSGMK1:~15^^! >> %AUTOINSTALL_STARTUP%
echo 	set MSGMK3=^^!MSGMK2:~0,-3^^! >> %AUTOINSTALL_STARTUP%
echo 	echo ^^!MSGMK3^^! >> %AUTOINSTALL_STARTUP%
echo ) >> %AUTOINSTALL_STARTUP%
echo REM ### ログファイル出力 >> %AUTOINSTALL_STARTUP%
echo echo [%%date%%-%%time%%] %%~1 ^>^> %%AUTOINSTALL_LOG%% >> %AUTOINSTALL_STARTUP%
echo. >> %AUTOINSTALL_STARTUP%
echo exit /b 0 >> %AUTOINSTALL_STARTUP%
echo ENDLOCAL enabledelayedexpansion >> %AUTOINSTALL_STARTUP%
echo %WRITE_SUCCESS% >> %AUTOINSTALL_STARTUP%

REM ###
REM ### AutoInstall_StartUp.bat作成チェック
REM ###
find /I %WRITE_SUCCESS% %AUTOINSTALL_STARTUP% >nul
REM ### findの戻り値取得
set RET=%ERRORLEVEL%
if %RET%==0 (
	REM ### 作成成功
	goto CREATE_SHORTCUT
)
REM ### 作成失敗
call :LOG_OUT %MSG-INI-022-E% %CONSOLE_OFF%
goto ERROR2_END

:CREATE_SHORTCUT

REM ###
REM ### StartUpにAutoInstall_StartUp.batショートカット登録
REM ###
REM ### StartUpに登録したショートカット削除
del %DIR_STARTUP%"AutoInstall_StartUp.bat - Shortcut.lnk" /f /Q >> %AUTOINSTALL_LOG% 2>>&1
if not exist %DIR_STARTUP%"AutoInstall_StartUp.bat - Shortcut.lnk"% (
	goto LOOPEND2
)
call :LOG_OUT %MSG-INI-023-E% %CONSOLE_OFF%
goto ERROR2_END
:LOOPEND2

call :LOG_OUT %MSG-INI-018-I% %CONSOLE_OFF%
REM ### StartUpにAutoInstall_StartUp.batショートカット登録
REM ### 存在チェック
set BATCH_MAKE_SHORTCUT=%BATCH_FILE_FOLDER%Make_ShortCut.bat
if not exist %BATCH_MAKE_SHORTCUT% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_MAKE_SHORTCUT% >> %AUTOINSTALL_LOG%
	goto ERROR2_END
)

REM PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command 2>nul "Start-Process -wait %BATCH_MAKE_SHORTCUT% -Verb runas"
call %BATCH_MAKE_SHORTCUT% 2>nul
set BAT_ERROR=!errorlevel!
if !BAT_ERROR! == 0 (
	if not exist %DIR_STARTUP%"AutoInstall_StartUp.bat - Shortcut.lnk"% (
		call :LOG_OUT %MSG-INI-031-E% %CONSOLE_OFF%
		goto ERROR2_END
	)
	goto LOOPEND3
) else if !BAT_ERROR! == 1 (
	call :LOG_OUT %MSG-INI-024-E% %CONSOLE_OFF%
	goto ERROR2_END
) else if !BAT_ERROR! == 2 (
	goto ERROR2_END
) else (
	goto ERROR2_END
)

:LOOPEND3

REM ###
REM ### 正常終了処理フラグが存在するか？（1-11）
REM ###
if exist %NMLENDFLAG% (
	call :LOG_OUT %MSG-INI-039-I% %CONSOLE_OFF%
	REM ###
	REM ### 正常終了処理（5-2）
	REM ###
	goto NORMAL2_END
) else (
	call :LOG_OUT %MSG-INI-040-I% %CONSOLE_OFF%
)

REM ###
REM ### エラー終了処理フラグが存在するか？（1-12）
REM ###
if exist %ERRENDFLAG% (
	call :LOG_OUT %MSG-INI-041-I% %CONSOLE_OFF%
	REM ###
	REM ### エラー終了処理（5-1）
	REM ###
	goto ERROR2_END
) else (
	call :LOG_OUT %MSG-INI-042-I% %CONSOLE_OFF%
)

REM ###
REM ### Pendingフラグが存在するか？（1-8）
REM ###
if exist %PENDINGFLAG% (
	call :LOG_OUT %MSG-INI-019-I% %CONSOLE_OFF%
	REM ###
	REM ### リトライ処理（4-4）
	REM ###
	goto PROC_RETRY
) else (
	call :LOG_OUT %MSG-INI-020-I% %CONSOLE_OFF%
)

REM ###
REM ### SVPのログイン画面に複数のアカウントが表示される場合？（1-4）
REM ###
REM ### レジストリが存在しているかチェック
%CHECK_CREDENTIAL_PROVIDOR% >> %AUTOINSTALL_LOG% 2>>&1
if %ERRORLEVEL% == 0 (
	REM ###
	REM ### SVPのログイン画面に複数のアカウントが表示されている（1-5,1-11）
	REM ###
	call :LOG_OUT %MSG-INI-006-W% %CONSOLE_OFF%
	REM ### SVPログイン画面修復時のレジストリの所有権および
	REM ### アクセス権を変更
	REM ### 存在チェック
	set BATCH_DELETE_CREDENTIAL_PROVIDER_AC=%BATCH_FILE_FOLDER%Delete_Credential_Provider_AC.bat
	if not exist !BATCH_DELETE_CREDENTIAL_PROVIDER_AC! (
		call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
		echo !BATCH_DELETE_CREDENTIAL_PROVIDER_AC! >> %AUTOINSTALL_LOG%
		goto ERROR_END
	)

	REM PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command  2>nul "Start-Process -wait !BATCH_DELETE_CREDENTIAL_PROVIDER_AC! -Verb runas"
	call !BATCH_DELETE_CREDENTIAL_PROVIDER_AC! 2>nul
	set BAT_ERROR=!errorlevel!
	if !BAT_ERROR! == 0 (
		goto LOOPEND4
	) else if !BAT_ERROR! == 1 (
		call :LOG_OUT %MSG-INI-034-E% %CONSOLE_OFF%
		goto ERROR_END
	) else if !BAT_ERROR! == 2 (
		call :LOG_OUT %MSG-INI-035-E% %CONSOLE_OFF%
		goto ERROR_END
	) else (
		goto ERROR_END
	)
:LOOPEND4
	REM ### SVPログイン画面の修復用batch起動(レジストリ削除)
	REM ### batchが正常終了した場合はbatch内でrebootする
	REM ### 存在チェック
	set BATCH_DELETE_CREDENTIAL_PROVIDER_REG=%BATCH_FILE_FOLDER%Delete_Credential_Provider_reg.bat
	if not exist !BATCH_DELETE_CREDENTIAL_PROVIDER_REG! (
		call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
		echo !BATCH_DELETE_CREDENTIAL_PROVIDER_REG! >> %AUTOINSTALL_LOG%
		goto ERROR_END
	)
	
	REM PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command 2>nul "Start-Process -wait !BATCH_DELETE_CREDENTIAL_PROVIDER_REG! -Verb runas"
	call !BATCH_DELETE_CREDENTIAL_PROVIDER_REG! 2>nul
	set BAT_ERROR=!errorlevel!
	if !BAT_ERROR! == 0 (
		call :LOG_OUT %MSG-INI-008-W% %CONSOLE_ON%
		call :LOG_OUT %MSG-COM-003-I% %CONSOLE_ON%
		REM ### 一時停止
		pause > nul 2>&1
		REM ### reboot
		shutdown -f -r -t 0
		exit
	) else if !BAT_ERROR! == 1 (
		call :LOG_OUT %MSG-INI-028-E% %CONSOLE_OFF%
		goto ERROR_END
	) else if !BAT_ERROR! == 2 (
		call :LOG_OUT %MSG-INI-036-E% %CONSOLE_OFF%
		goto ERROR_END
	) else (
		goto ERROR_END
	)
) else (
	REM ###
	REM ### SVPのログイン画面に複数のアカウントが表示されていない
	REM ###
	call :LOG_OUT %MSG-INI-007-I% %CONSOLE_OFF%
)

REM ###
REM ### 当月パッチ適用フラグが有るか？（1-6）
REM ###
if exist %NEWFLAG% (
	REM ### 当月パッチ適用フラグ存在する
	call :LOG_OUT %MSG-INI-009-I% %CONSOLE_OFF%
	REM ###
	REM ### 当月パッチ適用チェック（3-1）
	REM ###
	call :PROC_NEW_CHECK
	if !ERRORLEVEL!==0 (
		REM ### 当月パッチ適用済
		REM ###
		REM ### 正常処理（5-2）
		REM ###
		goto NORMAL_END
	) else if !ERRORLEVEL!==1 (
		REM ### 当月パッチ未適用
		REM ###
		REM ### pending関連処理（PROC_PENDINGが正常終了した場合は、
		REM ### PROC_PENDING内でrebootする。call元に戻ってきた場合は、
		REM ### PROC_PENDING内でエラーが発生しているので、ERROR2_ENDに飛ぶ）(4-1)
		REM ###
		call :PROC_PENDING
		goto ERROR2_END
	) else (
		REM ###
		REM ### エラー処理へ（5-1）
		REM ###
		goto ERROR_END
	)
) else (
	REM ### 当月パッチ適用フラグ存在しない
	call :LOG_OUT %MSG-INI-010-I% %CONSOLE_OFF%
	REM ###
	REM ### SSU適用チェック（2-1）
	REM ###
	call :PROC_SSU_CHECK
	if !ERRORLEVEL!==0 (
		REM ### SSU適用済
		REM ###
		REM ### SSUフラグ、リトライフラグ削除（2-2）
		REM ###
		call :DEL_FLAG_SSU_RETRY
		if !ERRORLEVEL! neq 0 (
			REM ###
			REM ### エラー処理へ（5-1）
			REM ###
			goto ERROR_END
		)
		REM ###
		REM ### 当月パッチ適用チェック（3-2）
		REM ###
		call :PROC_NEW_CHECK
		if !ERRORLEVEL!==0 (
			REM ### 当月パッチ適用済
			REM ###
			REM ### 正常処理（5-2）
			REM ###
			goto NORMAL_END
		) else if !ERRORLEVEL!==1 (
			REM ### 当月パッチ未適用
			REM ###
			REM ### 当月パッチ適用処理（PROC_NEW_PATCH内でrebootする。）（3-3）
			REM ###
			goto PROC_NEW_PATCH
		) else (
			REM ###
			REM ### エラー処理へ（5-1）
			REM ###
			goto ERROR_END
		)
	) else if !ERRORLEVEL!==1 (
		REM ### SSU未適用
		REM ### SSU適用フラグが存在するか？（2-3）
		if exist %SSUFLAG% (
			REM ###  SSU適用フラグ存在する
			call :LOG_OUT %MSG-SSU-006-I% %CONSOLE_OFF%
			REM ###
			REM ### pending関連処理（PROC_PENDINGが正常終了した場合は、
			REM ### PROC_PENDING内でrebootする。call元に戻ってきた場合は、
			REM ### PROC_PENDING内でエラーが発生しているので、ERROR2_ENDに飛ぶ）(4-1)
			REM ###
			call :PROC_PENDING
			goto ERROR2_END
		) else (
			REM ###  SSU適用フラグ存在しない
			REM ###  SSU適用フラグ存在する
			call :LOG_OUT %MSG-SSU-007-I% %CONSOLE_OFF%
			REM ###
			REM ### SSU適用処理（PROC_SSU_PATCH内でrebootする。）（2-4）
			REM ###
			goto PROC_SSU_PATCH
		)
	) else (
		REM ###
		REM ### エラー処理へ（5-1）
		REM ###
		goto ERROR_END
	)
)

REM ### ここのexitは念のために記載
exit


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 >> %AUTOINSTALL_LOG%

exit /b 0


REM ###############################################
REM ###
REM ### 	SSU適用チェック（2-1）
REM ###
REM ###	return
REM ### %RET%(0:存在する 1:存在しない 2:batch起動失敗
REM ###       3:CheckResult.txtが存在しない)
REM ###
REM ###############################################
:PROC_SSU_CHECK

REM ### SSU適用チェック
call :LOG_OUT %MSG-SSU-001-I% %CONSOLE_ON%

REM ### 保留中があった場合、Waitする。最大15分Wait
for /l %%a in (1, 1, 15) do (
DISM /Online /Get-Packages /Format:Table | findstr /I "Update" > %INSTALL_STATE_LIST%
findstr /C:"Install Pending" %INSTALL_STATE_LIST% > nul 2> nul
if !errorlevel!==0 (
timeout /T 60 /NOBREAK > NUL
call :LOG_OUT %MSG-SSU-018-I% %CONSOLE_OFF%
)
)

REM ### 保留チェック
REM ### 一覧の中に保留中がないか検索
REM ### あった場合は、1:存在しないでチェックを行わない
DISM /Online /Get-Packages /Format:Table | findstr /I "Update" > %INSTALL_STATE_LIST%
findstr /C:"Install Pending" %INSTALL_STATE_LIST% > nul 2> nul
if %errorlevel% == 0 (
call :LOG_OUT %MSG-SSU-017-I% %CONSOLE_OFF%
exit /b 1
)

REM ### 存在チェック
set BATCH_CHECKTOOL=%SSU_FOLDER%CheckTool.bat
if not exist %BATCH_CHECKTOOL% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_CHECKTOOL% >> %AUTOINSTALL_LOG%
	goto ERROR_END
)

call %BATCH_CHECKTOOL% < nul 2> nul > %CHECKRESULT%
if !errorlevel! == 0 (
	REM ### CheckResult.txtファイル存在チェック
	if not exist %CHECKRESULT% (
		call :LOG_OUT %MSG-SSU-012-E% %CONSOLE_OFF%
		REM ### エラー終了
		exit /b 3
	)
	goto LOOPEND8
) else if !errorlevel! == 1 (
	call :LOG_OUT %MSG-SSU-010-E% %CONSOLE_OFF%
	REM ### エラー終了
	exit /b 2
) else  if !errorlevel! == 2 (
	REM ### CheckTool.batの実行結果(CheckResult.txt)をAutoInstall_log.txtに結合
	type %CHECKRESULT% >> %AUTOINSTALL_LOG% 2>>&1
	REM ### エラー終了
	exit /b 2
)

:LOOPEND8

REM ### CheckTool.batの実行結果(CheckResult.txt)をAutoInstall_log.txtに結合
type %CHECKRESULT% >> %AUTOINSTALL_LOG% 2>>&1
if !errorlevel! == 0 (
	goto LOOPEND9
)
call :LOG_OUT %MSG-SSU-013-E% %CONSOLE_OFF%
:LOOPEND9

REM ### CheckTool.batの実行結果に"The patches are applied successfully."が存在しているかチェック
find /I %CHECKTOOLRESULTOK% %CHECKRESULT% >nul
REM ### findの戻り値取得
set RET=%ERRORLEVEL%
if %RET%==0 (
	REM ### 存在する
	call :LOG_OUT %MSG-SSU-002-I% %CONSOLE_ON%
) else (
	REM ### 存在しない
	call :LOG_OUT %MSG-SSU-003-I% %CONSOLE_ON%
)
exit /b %RET%

REM ###############################################
REM ###
REM ### SSUフラグ、リトライフラグ削除（2-2）
REM ###
REM ###############################################
:DEL_FLAG_SSU_RETRY

REM ### SSU適用フラグ削除
call :LOG_OUT %MSG-SSU-004-I% %CONSOLE_OFF%
del %SSUFLAG% /f /Q >> %AUTOINSTALL_LOG% 2>>&1
if not exist %SSUFLAG% (
	goto LOOPEND10
)
call :LOG_OUT %MSG-SSU-014-E% %CONSOLE_OFF%
goto ERROR_END_DEL_FLAG_SSU_RETRY

:LOOPEND10

REM ### リトライフラグ削除
call :LOG_OUT %MSG-SSU-005-I% %CONSOLE_OFF%
del %RETRYFLAG% /f /Q >> %AUTOINSTALL_LOG% 2>>&1
if not exist %RETRYFLAG% (
	goto LOOPEND11
)
call :LOG_OUT %MSG-SSU-015-E% %CONSOLE_OFF%
goto ERROR_END_DEL_FLAG_SSU_RETRY

:LOOPEND11

exit /b 0

:ERROR_END_DEL_FLAG_SSU_RETRY
exit /b 2


REM ###############################################
REM ###
REM ### SSU適用処理（2-4）
REM ### batch_hotfix_local.bat内でrebootする
REM ###
REM ###############################################
:PROC_SSU_PATCH
REM ### SSU適用フラグ設定
call :LOG_OUT %MSG-SSU-008-I% %CONSOLE_OFF%

type nul > %SSUFLAG%
if exist %SSUFLAG% (
	goto LOOPEND12
)
call :LOG_OUT %MSG-SSU-016-E% %CONSOLE_OFF%
goto ERROR_END

:LOOPEND12

REM ### SSU適用バッチ実行
call :LOG_OUT %MSG-SSU-009-I% %CONSOLE_ON%

REM ### 存在チェック
set BATCH_SSU_HOTFIX_LOCAL=%SSU_FOLDER%batch_hotfix_local.bat
if not exist %BATCH_SSU_HOTFIX_LOCAL% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_SSU_HOTFIX_LOCAL% >> %AUTOINSTALL_LOG%
	goto ERROR_END
)

start /wait %BATCH_SSU_HOTFIX_LOCAL% 2>nul
exit


REM ###############################################
REM ###
REM ### 当月パッチ適用チェック（3-1,3-2）
REM ###
REM ###	return
REM ### %RET%(0:存在する 1:存在しない)
REM ###
REM ###############################################
:PROC_NEW_CHECK

REM ### 当月パッチ適用チェック
call :LOG_OUT %MSG-NEW-001-I% %CONSOLE_ON%

REM ### 保留中があった場合、Waitする。最大15分Wait
for /l %%a in (1, 1, 15) do (
DISM /Online /Get-Packages /Format:Table | findstr /I "Update" > %INSTALL_STATE_LIST%
findstr /C:"Install Pending" %INSTALL_STATE_LIST% > nul 2> nul
if !errorlevel!==0 (
timeout /T 60 /NOBREAK > NUL
call :LOG_OUT %MSG-NEW-012-I% %CONSOLE_OFF%
)
)

REM ### 保留チェック
REM ### 一覧の中に保留中がないか検索
REM ### あった場合は、1:存在しないでチェックを行わない
DISM /Online /Get-Packages /Format:Table | findstr /I "Update" > %INSTALL_STATE_LIST%
findstr /C:"Install Pending" %INSTALL_STATE_LIST% > nul 2> nul
if %errorlevel% == 0 (
call :LOG_OUT %MSG-NEW-011-I% %CONSOLE_OFF%
exit /b 1
)

REM ### 存在チェック
set BATCH_CHECKTOOL=%NEW_FOLDER%CheckTool.bat
if not exist %BATCH_CHECKTOOL% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_CHECKTOOL% >> %AUTOINSTALL_LOG%
	goto ERROR_END
)

call %BATCH_CHECKTOOL% < nul 2> nul > %CHECKRESULT%
if !errorlevel! == 0 (
	REM ### CheckResult.txtファイル存在チェック
	if not exist %CHECKRESULT% (
		call :LOG_OUT %MSG-NEW-008-E% %CONSOLE_OFF%
		REM ### エラー終了
		exit /b 3
	)
	goto LOOPEND14
) else if !errorlevel! == 1 (
	call :LOG_OUT %MSG-NEW-006-E% %CONSOLE_OFF%
	REM ### エラー終了
	exit /b 2
) else  if !errorlevel! == 2 (
	REM ### CheckTool.batの実行結果(CheckResult.txt)をAutoInstall_log.txtに結合
	type %CHECKRESULT% >> %AUTOINSTALL_LOG% 2>>&1
	REM ### エラー終了
	exit /b 2
)

:LOOPEND14

REM ### CheckTool.batの実行結果(CheckResult.txt)をAutoInstall_log.txtに結合
type %CHECKRESULT% >> %AUTOINSTALL_LOG% 2>>&1
if !errorlevel! == 0 (
	goto LOOPEND141
)
call :LOG_OUT %MSG-NEW-009-E% %CONSOLE_OFF%
:LOOPEND141

REM ### CheckTool.batの実行結果に"The patches are applied successfully."が存在しているかチェック
find /I %CHECKTOOLRESULTOK% %CHECKRESULT% >nul
REM ### findの戻り値取得
set RET=%ERRORLEVEL%
if %RET%==0 (
	REM ### 存在する
	call :LOG_OUT %MSG-NEW-002-I% %CONSOLE_ON%
) else (
	REM ### 存在しない
	call :LOG_OUT %MSG-NEW-003-I% %CONSOLE_ON%
)

exit /b %RET%


REM ###############################################
REM ###
REM ### 当月パッチ適用処理（3-3）
REM ### batch_hotfix_local.bat内でrebootする
REM ###
REM ###############################################
:PROC_NEW_PATCH
REM ### 当月パッチ適用フラグ設定
call :LOG_OUT %MSG-NEW-004-I% %CONSOLE_OFF%
type nul > %NEWFLAG%
if exist %NEWFLAG% (
	goto LOOPEND17
)
call :LOG_OUT %MSG-NEW-010-E% %CONSOLE_OFF%
goto ERROR_END
:LOOPEND17

REM ### 当月パッチ適用バッチ実行
call :LOG_OUT %MSG-NEW-005-I% %CONSOLE_ON%

REM ### 存在チェック
set BATCH_NEW_HOTFIX_LOCAL=%NEW_FOLDER%batch_hotfix_local.bat
if not exist %BATCH_NEW_HOTFIX_LOCAL% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_NEW_HOTFIX_LOCAL% >> %AUTOINSTALL_LOG%
	goto ERROR_END
)

start /wait %BATCH_NEW_HOTFIX_LOCAL% 2>nul
exit


REM ###############################################
REM ###
REM ### PENDING関連処理（4-1,4-2,4-3）
REM ###
REM ###############################################
:PROC_PENDING

REM ###
REM ### Pending.xmlが存在するか?（4-1）
REM ###
dir %PENDINGXMLFILE% > nul 2>&1
if %errorlevel% == 0 (
	REM ###
	REM ### Pending.xml削除バッチを管理者権限で実行（4-2）
	REM ###
	call :LOG_OUT %MSG-PEN-001-I% %CONSOLE_OFF%
	call :LOG_OUT %MSG-PEN-015-I% %CONSOLE_OFF%
	REM ### 存在チェック
	set BATCH_DELETE_PENDING=%BATCH_FILE_FOLDER%Delete_Pending.bat
	if not exist !BATCH_DELETE_PENDING! (
		call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
		echo !BATCH_DELETE_PENDING! >> %AUTOINSTALL_LOG%
		exit /b 2
	)

	REM PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command 2>nul "Start-Process -wait !BATCH_DELETE_PENDING! -Verb runas"
	call !BATCH_DELETE_PENDING! 2>nul
	set BAT_ERROR=!errorlevel!
	if !BAT_ERROR! == 0 (
		dir %PENDINGXMLFILE% > nul 2>&1
		set BAT_ERROR=!errorlevel!
		if !BAT_ERROR! == 0 (
			call :LOG_OUT %MSG-PEN-028-E% %CONSOLE_OFF%
			exit /b 2
		)
		goto LOOPEND19
 	) else if !BAT_ERROR! == 1 (
		call :LOG_OUT %MSG-PEN-019-E% %CONSOLE_OFF%
		exit /b 2
 	) else (
		exit /b 2
	)
) else (
	call :LOG_OUT %MSG-PEN-002-I% %CONSOLE_OFF%
)
:LOOPEND19

REM ###
REM ### Pendingレジストリ（4-3）
REM ###
REM ###
REM ### Pendingフラグ設定
REM ### 正常終了処理フラグ及びエラー終了処理フラグが
REM ### 存在しない場合、Pendingフラグ設定する。
REM ##
if not exist %NMLENDFLAG% if not exist %ERRENDFLAG% (
	call :LOG_OUT %MSG-PEN-017-I% %CONSOLE_OFF%

	type nul > %PENDINGFLAG%
	if exist %PENDINGFLAG% (
		goto LOOPEND20
	)
	call :LOG_OUT %MSG-PEN-021-E% %CONSOLE_OFF%
	exit /b 2
)
:LOOPEND20

REM ###
REM ### Pendingレジストリ削除バッチを管理者権限で実行
REM ###
REM ### 存在チェック
set BATCH_DELETE_PENDING_REG=%BATCH_FILE_FOLDER%Delete_Pending_reg.bat
if not exist %BATCH_DELETE_PENDING_REG% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_DELETE_PENDING_REG% >> %AUTOINSTALL_LOG%
	exit /b 2
)

REM PowerShell.exe -NoProfile -ExecutionPolicy unrestricted -Command 2>nul "Start-Process -wait %BATCH_DELETE_PENDING_REG% -Verb runas"
call %BATCH_DELETE_PENDING_REG% 2>nul
set BAT_ERROR=!errorlevel!
if !BAT_ERROR! == 0 (
	goto END_PENDING_REG
) else if !BAT_ERROR! == 1 (
	call :LOG_OUT %MSG-PEN-020-E% %CONSOLE_OFF%
	exit /b 2
) else if !BAT_ERROR! == 2 (
	REM ### レジストリ操作時にエラーが発生した場合は、
	REM ### ログのみ採取して異常終了はせずに、
	REM ### そのまま処理を進め、自動rebootさせることで回復を図る。
	goto END_PENDING_REG
) else (
	exit /b 2
)

:END_PENDING_REG
call :LOG_OUT %MSG-PEN-016-W% %CONSOLE_ON%
call :LOG_OUT %MSG-COM-003-I% %CONSOLE_ON%
REM ### 一時停止
pause > nul 2>&1
REM ### reboot
shutdown -f -r -t 0
exit

REM ###############################################
REM ###
REM ### リトライチェック（4-4,4-5,4-6,4-7）
REM ###
REM ###############################################
:PROC_RETRY

REM ###
REM ### リトライフラグが存在するか？（4-4）
REM ###
if exist %RETRYFLAG% (
	REM ### リトライフラグ存在する
	call :LOG_OUT %MSG-PEN-003-I% %CONSOLE_OFF%
	REM ### セキュリティPatchが適用できませんでした
	call :LOG_OUT %MSG-END-002-E% %CONSOLE_ON%
	goto ERROR_END
) else (
	REM ### リトライフラグ存在しない
	call :LOG_OUT %MSG-PEN-004-I% %CONSOLE_OFF%
)

REM ###
REM ### リトライフラグ設定（4-5）
REM ###
call :LOG_OUT %MSG-PEN-005-I% %CONSOLE_OFF%
type nul > %RETRYFLAG%
if exist %RETRYFLAG% (
	goto LOOPEND22
)
call :LOG_OUT %MSG-PEN-022-E% %CONSOLE_OFF%
goto ERROR_END

:LOOPEND22

REM ###
REM ### Pendingフラグ削除（4-5）
REM ###
call :LOG_OUT %MSG-PEN-018-I% %CONSOLE_OFF%

del %PENDINGFLAG% /f /Q >> %AUTOINSTALL_LOG% 2>>&1
if not exist %PENDINGFLAG% (
	goto LOOPEND23
)
call :LOG_OUT %MSG-PEN-023-E% %CONSOLE_OFF%
goto ERROR_END

:LOOPEND23

REM ###
REM ### SSU適用フラグが存在するか？（4-6）
REM ###
if exist %SSUFLAG% (
	REM ###  SSU適用フラグ存在する
	call :LOG_OUT %MSG-PEN-009-I% %CONSOLE_OFF%
	
	REM ###
	REM ### SSU適用処理（PROC_SSU_PATCH内でrebootする。）（2-4）
	REM ###
	call :LOG_OUT %MSG-PEN-011-I% %CONSOLE_OFF%
	goto PROC_SSU_PATCH
) else (
	REM ###  SSU適用フラグ存在しない
	call :LOG_OUT %MSG-PEN-010-I% %CONSOLE_OFF%
)

REM ###
REM ### 当月パッチ適用フラグが存在するか？（4-7）
REM ###
if exist %NEWFLAG% (
	REM ###  当月パッチ適用フラグ存在する
	call :LOG_OUT %MSG-PEN-012-I% %CONSOLE_OFF%
	
	REM ###
	REM ### 当月パッチ適用処理（PROC_NEW_PATCH内でrebootする。）（3-3）
	REM ###
	call :LOG_OUT %MSG-PEN-014-I% %CONSOLE_OFF%
	GOTO PROC_NEW_PATCH
) else (
	REM ###  当月パッチ適用フラグ存在しない
	call :LOG_OUT %MSG-PEN-013-I% %CONSOLE_OFF%
)

REM ###
REM ### エラー処理（5-1）
REM ### SSU適用フラグ、当月パッチ適用フラグが存在しない場合は、
REM ### 本ツールのバグ
REM ###
goto ERROR_END


REM ###############################################
REM ###
REM ### 	Windows イベントログ収集（5-1）
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=%BATCH_FILE_FOLDER%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 ### 	エラー終了処理（5-1）
REM ###
REM ###############################################
:ERROR_END

call :LOG_OUT %MSG-END-032-I% %CONSOLE_OFF%
REM ###
REM ### 正常終了処理フラグが存在するか？
REM ###
if exist %NMLENDFLAG% (
	call :LOG_OUT %MSG-END-029-I% %CONSOLE_OFF%
	goto NORMAL2_END
)

REM ###
REM ### エラー終了処理フラグ設定
REM ###
call :LOG_OUT %MSG-END-024-I% %CONSOLE_OFF%
type nul > %ERRENDFLAG%
if not exist %ERRENDFLAG% (
	call :LOG_OUT %MSG-END-025-E% %CONSOLE_OFF%
	goto ERROR2_END
)

REM ###
REM ### pending関連処理（PROC_PENDINGが正常終了した場合は、
REM ### PROC_PENDING内でrebootする。call元に戻ってきた場合は、
REM ### PROC_PENDING内でエラーが発生しているので、ERROR2_END以降を実施する）
REM ###
REM ### エラー終了時のPENDING削除処理
call :LOG_OUT %MSG-END-026-I% %CONSOLE_OFF%
call :PROC_PENDING

:ERROR2_END
call :LOG_OUT %MSG-END-033-I% %CONSOLE_OFF%
REM ###
REM ### 正常終了処理フラグが存在するか？
REM ###
if exist %NMLENDFLAG% (
	call :LOG_OUT %MSG-END-029-I% %CONSOLE_OFF%
	goto NORMAL2_END
)

REM ### フラグファイル、workファイル、StartUpに登録したショートカット及び
REM ### StartUp起動用のBatchファイルの削除実行
REM ### 存在チェック
set BATCH_CLEAR_FILE=%BATCH_FILE_FOLDER%Clear_File.bat
if not exist %BATCH_CLEAR_FILE% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_CLEAR_FILE% >> %AUTOINSTALL_LOG%
	goto LOOPEND24
)

call %BATCH_CLEAR_FILE% 2>nul
set BAT_ERROR=!errorlevel!
if !BAT_ERROR! == 1 (
	call :LOG_OUT %MSG-END-009-E% %CONSOLE_OFF%
)

:LOOPEND24

REM ### ログ収集
call :LOG_COLLECTION
REM ### セキュリティPatch適用自動化ツールエラー終了
call :LOG_OUT %MSG-END-008-E% %CONSOLE_ON%
call :LOG_OUT %MSG-COM-002-I% %CONSOLE_ON%
REM ### 一時停止
pause > nul 2>&1
REM ### 終了
exit


REM ###############################################
REM ###
REM ### 	正常終了処理（5-2）
REM ###
REM ###############################################
:NORMAL_END

call :LOG_OUT %MSG-END-030-I% %CONSOLE_OFF%
REM ###
REM ### 正常終了処理フラグ設定
REM ###
call :LOG_OUT %MSG-END-021-I% %CONSOLE_OFF%
type nul > %NMLENDFLAG%
if not exist %NMLENDFLAG% (
	call :LOG_OUT %MSG-END-022-E% %CONSOLE_OFF%
	goto NORMAL2_END
)

REM ###
REM ### pending関連処理（PROC_PENDINGが正常終了した場合は、
REM ### PROC_PENDING内でrebootする。call元に戻ってきた場合は、
REM ### PROC_PENDING内でエラーが発生しているので、NORMAL2_END以降を実施する）
REM ###
REM ### 正常終了時のPENDING削除処理
call :LOG_OUT  %MSG-END-023-I% %CONSOLE_OFF%
call :PROC_PENDING

:NORMAL2_END
call :LOG_OUT %MSG-END-031-I% %CONSOLE_OFF%
REM ### フラグファイル、workファイル、StartUpに登録したショートカット及び
REM ### StartUp起動用のBatchファイルの削除実行
REM ### 存在チェック
set BATCH_CLEAR_FILE=%BATCH_FILE_FOLDER%Clear_File.bat
if not exist %BATCH_CLEAR_FILE% (
	call :LOG_OUT %MSG-COM-009-E% %CONSOLE_ON%
	echo %BATCH_CLEAR_FILE% >> %AUTOINSTALL_LOG%
	goto LOOPEND25
)

call %BATCH_CLEAR_FILE% 2>nul
set BAT_ERROR=!errorlevel!
if !BAT_ERROR! == 1 (
	call :LOG_OUT %MSG-END-009-E% %CONSOLE_OFF%
)

:LOOPEND25

REM ### セキュリティPatchはすべて適用されました
call :LOG_OUT %MSG-END-001-I% %CONSOLE_ON%

REM ###
REM ### mpam-fe.exe(Windows Defender)実行
REM ###
set Win_Def_exe=%MEDIA_CURRENT%Defender\mpam-fe.exe
start /wait %Win_Def_exe% >nul 2>nul
call :LOG_OUT %MSG-END-034-I% %CONSOLE_OFF%

REM ### セキュリティPatch適用自動化ツール正常終了
call :LOG_OUT %MSG-END-007-I% %CONSOLE_ON%
call :LOG_OUT %MSG-COM-002-I% %CONSOLE_ON%
REM ### 一時停止
pause > nul 2>&1
REM ### 終了
exit
ENDLOCAL enabledelayedexpansion
