@ECHO OFF
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
TITLE  ⨧㧮筮 ᪠.	koros aka ya158 (c) 2015

REM ᢮ ६ WDir 祭     ZZ_MultiBootDisk
SET WDir=%~1

REM  䠩 setting.ini  Temp\setting
FOR /F "UseBackQ EOL=; Tokens=1,2* Delims==" %%i IN ("%WDir%\Settings\setting.ini") DO CALL SET %%~i=%%~j
FOR /F "UseBackQ EOL=; Tokens=1,2* Delims==" %%i IN ("Temp\setting") DO CALL SET %%~i=%%~j

ECHO  ⨧㧮筮 ᪠.

REM ஢ઠ  MassStorage-ࠩ௠  稨  VOLM
SET VOLM=VOLM
IF EXIST "%WDir%\VOLM\WINN*.SIF" IF NOT EXIST "%Zipped%\%name%.7z" SET VOLM=

REM 室 ஢ ୮ ⥣樨 
IF EXIST "%I386%\ADDONS.LST" (
	ATTRIB -R "%I386%\ADDONS.LST"
	>"%I386%\ADDONS.TMP" FINDSTR /L /I /V /C:"ZZ_MultiBootDisk" "%I386%\ADDONS.LST"
	DEL /F /Q "%I386%\ADDONS.LST"
	REN "%I386%\ADDONS.TMP" *.LST
)

REM  । ⮪ ⥣樨
IF EXIST "%Distr%\BCDW\" RD /S /Q "%Distr%\BCDW">nul
IF EXIST "%Distr%\BOOT\" RD /S /Q "%Distr%\BOOT">nul
FOR %%a IN (VOLS,VOLD,VOLM) DO IF EXIST "%Distr%\%%a\" RD /S /Q "%Distr%\%%a">nul

REM ஢ 䠩, 室  ࣠樨 ⨧㧪
XCOPY /Q /Y /S /E /H /R "%WDir%\BOOT\*.*" "%Distr%\BOOT\">nul

REM  砫 䠩 isolinux.cfg
>>Temp\isolinux.cfg ECHO PROMPT	0
>>Temp\isolinux.cfg ECHO TIMEOUT	%TIMER%0
>>Temp\isolinux.cfg ECHO NOESCAPE	1
>>Temp\isolinux.cfg ECHO.
>>Temp\isolinux.cfg ECHO DEFAULT /boot/isolinux/modules/vesamenu.c32
>>Temp\isolinux.cfg ECHO INCLUDE %GRAPHICS%
>>Temp\isolinux.cfg ECHO FONT %FONT%
>>Temp\isolinux.cfg ECHO MENU BACKGROUND %Image%
>>Temp\isolinux.cfg ECHO.
>>Temp\isolinux.cfg ECHO # \\\\\\\\\   ⠩
>>Temp\isolinux.cfg ECHO MENU TITLE Windows XP Professional SP3 Plus x32
>>Temp\isolinux.cfg ECHO MENU PASSPROMPT  ஫
>>Temp\isolinux.cfg ECHO MENU AUTOBOOT ⮢롮 १ # ᥪ
>>Temp\isolinux.cfg ECHO.
>>Temp\isolinux.cfg ECHO # \\\\\\\\\ 㧪  ⪮ ᪠
>>Temp\isolinux.cfg ECHO LABEL boot_hdd
>>Temp\isolinux.cfg ECHO 	MENU DEFAULT
>>Temp\isolinux.cfg ECHO 	MENU LABEL 㧪  HDD
>>Temp\isolinux.cfg ECHO 	KERNEL /boot/isolinux/modules/chain.c32
>>Temp\isolinux.cfg ECHO 	APPEND hd0 0
>>Temp\isolinux.cfg ECHO 	TEXT HELP
>>Temp\isolinux.cfg ECHO 		⬥ 㧪  -᪠  USB  㧪  ⪮ ᪠
>>Temp\isolinux.cfg ECHO 		⮬᪨ ந  ⢨  祬 %TIMER% ᥪ㭤
>>Temp\isolinux.cfg ECHO 	ENDTEXT
>>Temp\isolinux.cfg ECHO.
REM  㭪⮢  , ᮮ⢥ VOLS,VOLD  VOLM
SET y=0 && FOR %%a IN (VOLS,VOLD,%VOLM%) DO (FOR /L %%i IN (0,1,20) DO IF EXIST "%WDir%\%%a\%%i.txt" SET /A y+=1)
IF !y! GTR 1 (
	FOR %%a IN (VOLS,VOLD,%VOLM%) DO (
		IF EXIST "%WDir%\%%a\*.txt" (
			REM ஢ 䠩, 室  ࣠樨 ⨧㧪
			XCOPY /Q /Y /H /R "%I386%\txtsetup.sif" "%Distr%\%%a\">nul
			XCOPY /Q /Y /H /R "%I386%\dosnet.inf" "%Distr%\%%a\">nul

			REM ஢ઠ ⢠ 䠩 *.txt  
			SET z=0 && FOR /L %%i IN (0,1,20) DO IF EXIST "%WDir%\%%a\%%i.txt" SET /A z+=1
			IF !z! GTR 1 (			
				REM     㭪 롮  ⠭ Windows XP
				>>Temp\isolinux.cfg ECHO MENU SEPARATOR
				CALL :MakItem %%a menu isolinux vesamenu
				IF "%%a" == "VOLS" (
					REM    ⠭⭮ ⠭ Windows XP
					CALL :MakeHeaderSubmenu %%a %GRAPHICSStandart% %FONTStandart% %ImageStandart%
					REM  ᥩ  ࠩ MASS storage  ⮣ 㭪  
					CALL :DelDrivers %%a

					REM 室 䥩 ⠯  ⠭  ࠩ஢.
					IF EXIST "%WDir%\%%a\WINN*.SIF" IF EXIST "%Zipped%\%name%.7z" (
							>>"%Distr%\%%a\txtsetup.sif" ECHO [SourceDisksFiles]
							>>"%Distr%\%%a\txtsetup.sif" ECHO Presetup.nop = 100,,,,,,,2,0,0,Presetup.cmd,4
					)
				)
				IF "%%a" == "VOLD" (
					REM    롮 ⠭ Windows XP  ࠩࠬ ⮫쪮 ᪮ ⠯
					CALL :MakeHeaderSubmenu %%a %GRAPHICSDrivers% %FONTDrivers% %ImageDrivers%
					REM  ᥩ  ࠩ MASS storage  ⮣ 㭪  
					CALL :DelDrivers %%a
				)
				IF "%%a" == "VOLM" (
					REM    롮 ⠭ Windows XP  ᥬ ࠩࠬ
					CALL :MakeHeaderSubmenu %%a %GRAPHICSMassStorage% %FONTMassStorage% %ImageMassStorage%
				)
				REM  㭪⮢  롮 ਠ⮢ ⠭ Windows XP 
				FOR /L %%i IN (0,1,20) DO (
					IF EXIST "%WDir%\%%a\%%i.txt" (
						CALL :MakeWinntSetupldr %%a %%i
						CALL :MakItem %%a %%i %%a chain
					)
				)
				COPY Temp\%%a.cfg "%Distr%\BOOT\isolinux\">nul 
			) ELSE (
				>>Temp\isolinux.cfg ECHO MENU SEPARATOR
				REM ।   業਩   
				FOR /L %%i IN (0,1,20) DO (IF EXIST "%WDir%\%%a\%%i.txt" SET S=%%i)
				CALL :MakeWinntSetupldr %%a !S!
				CALL :MakItem %%a !S! isolinux chain
				IF "%%a" == "VOLS" IF EXIST "%Zipped%\%name%.7z" (
					>>"%Distr%\%%a\txtsetup.sif" ECHO [SourceDisksFiles]
					>>"%Distr%\%%a\txtsetup.sif" ECHO Presetup.nop = 100,,,,,,,2,0,0,Presetup.cmd,4
				)
				IF NOT "%%a" == "VOLM" CALL :DelDrivers %%a
			)
			REM ஢ Boot 䠩    $WIN_NT$.~BT
			%WDir%\Tools\MakeVol.exe "%Distr%\%%a\dosnet.inf" "%I386%" "%Distr%\%%a">nul
			DEL /F /Q "%Distr%\%%a\dosnet.inf"
		)
	) 
) ELSE (
	SET S=No
	SET F=No
	REM ।   業਩      
	FOR %%a IN (VOLS,VOLD,%VOLM%) DO (FOR /L %%i IN (0,1,20) DO (IF EXIST "%WDir%\%%a\%%i.txt" SET S=%%i& SET F=%%a))
	REM  ᮭ   䠩 業 ⠭, ᫨  
	IF EXIST "%WDir%\!F!\WINN!S!.SIF" COPY /B "%WDir%\!F!\WINN!S!.SIF" + "%WDir%\Settings\userinfo.ini" "%I386%\WINNT.SIF">nul
	REM     㭪 ⠭ Windows XP
	>>Temp\isolinux.cfg ECHO MENU SEPARATOR
	CALL :MakItem !F! !S! isolinux chain 1
)
>>Temp\isolinux.cfg ECHO MENU SEPARATOR

REM  砭 䠩 isolinux.cfg
REM   ᭮  㭪⮢  utils.cfg
IF EXIST "%WDir%\Settings\utils.cfg" COPY /B Temp\isolinux.cfg + "%WDir%\Settings\utils.cfg" "%Distr%\BOOT\isolinux\isolinux.cfg">nul
REM   ᭮  㭪⮢  USB.cfg
IF EXIST "%WDir%\Settings\USB.cfg" (
	COPY /B "%Distr%\BOOT\isolinux\isolinux.cfg" + "%WDir%\Settings\USB.cfg" "Temp\isolinux1.cfg">nul
	ECHO.
	>>Temp\isolinux1.cfg ECHO MENU SEPARATOR
	>>Temp\isolinux1.cfg ECHO.
	>>Temp\isolinux1.cfg ECHO LABEL reboot
	>>Temp\isolinux1.cfg ECHO	MENU LABEL १㧪
	>>Temp\isolinux1.cfg ECHO	KERNEL /boot/isolinux/modules/reboot.c32
	>>Temp\isolinux1.cfg ECHO 	TEXT HELP
	>>Temp\isolinux1.cfg ECHO 		१㧪 
	>>Temp\isolinux1.cfg ECHO 	ENDTEXT
	>>Temp\isolinux1.cfg ECHO.
	>>Temp\isolinux1.cfg ECHO MENU SEPARATOR
	>>Temp\isolinux1.cfg ECHO.
	>>Temp\isolinux1.cfg ECHO LABEL halt
	>>Temp\isolinux1.cfg ECHO 	MENU LABEL 몫祭 
	>>Temp\isolinux1.cfg ECHO 	KERNEL /boot/isolinux/modules/poweroff.c32
	>>Temp\isolinux1.cfg ECHO 	TEXT HELP
	>>Temp\isolinux1.cfg ECHO 		몫 
	>>Temp\isolinux1.cfg ECHO 	ENDTEXT
)
ECHO.
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO MENU SEPARATOR
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO LABEL reboot
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO	MENU LABEL १㧪
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO	KERNEL /boot/isolinux/modules/reboot.c32
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 	TEXT HELP
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 		१㧪 
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 	ENDTEXT
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO.
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO MENU SEPARATOR
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO.
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO LABEL halt
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 	MENU LABEL 몫祭 
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 	KERNEL /boot/isolinux/modules/poweroff.c32
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 	TEXT HELP
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 		몫 
>>"%Distr%\BOOT\isolinux\isolinux.cfg" ECHO 	ENDTEXT

REM  ਡ⨢  ⠭  USB-Flash
ECHO  ਡ⨢  ⠭  USB-Flash
IF "%MakeUSB%"=="1" CALL :MakeUSB

REM ன ᪨ ⮢  
CALL :CFG "%Distr%\BOOT\isolinux"

REM  ࠧ %ISOFILE%.
IF "%MAKEISO%"=="1" (
	IF NOT EXIST Temp\sfcfiles.dll IF EXIST Temp\KillWFP.lst (
		ECHO   Sfcfiles.dll.
		IF EXIST sfcfiles.dll.bak DEL /F /Q sfcfiles.dll.bak
		EXPAND -R "%I386%\SFCFILES.DL_" Temp\>nul
		SFCPatch Temp\sfcfiles.dll Temp\KillWFP.lst>nul
		DEL /F /Q "%I386%\SFCFILES.DL_"
		MakeCab /D CompressionMemory=21 /D CompressionType=LZX /L "%I386%" Temp\sfcfiles.dll SFCFILES.DL_>nul
	)

	ECHO  inf-䠩  ࠧ %ISOFILE%
	FOR %%i IN (SYSOC,SVCPACK) DO (
		EXPAND -R %I386%\%%i.IN_ %I386%\>nul
		"%WDir%\Tools\INFCLEAN.EXE" %I386%\%%i.INF>nul
		DEL /F /Q "%I386%\%%i.IN_
		MakeCab /D CompressionMemory=21 /D CompressionType=LZX /L "%I386%" "%I386%\%%i.INF">nul
		DEL /F /Q "%I386%\%%i.INF
	)
	FOR %%i IN (Dosnet.inf,drvindex.inf,txtsetup.sif) DO ("%WDir%\Tools\INFCLEAN.EXE" %I386%\%%i>nul)

	ECHO  ࠧ %ISOFILE%.
	REM ᫨    %ISOPath%,  ᮧ  %ISOPath%
	IF NOT EXIST "%ISOPath%\" MD "%ISOPath%\"
	IF EXIST "%ISOPath%\%ISOFILE%" DEL /F /Q "%ISOPath%\%ISOFILE%"
		START "" /WAIT %WDir%\Tools\CDIMAGE.EXE -n -h -m -p -x -oi -yd -b"%Distr%\%ISOLINUX%" -l"%VOLNAME%" %Distr%\ "%ISOPath%\%ISOFILE%"
		START "" /WAIT %WDir%\Tools\IsoLinuxFixer.exe "%ISOPath%\%ISOFILE%"
)

GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakItem
REM  㭪 
REM %1 ,  ன 室 䠩 ᠭ 㭪 (VOLS, VOLD, VOLM)
REM %2  䠫 ᠭ  ७ (menu.txt, 1.txt, 2.txt ...)
REM %3  䠩 䨣樨   ७ (isolinux.cfg, VOLS.cfg, VOLD.cfg, VOLM.cfg)
REM %4  䠩   ᪠ 㭪 (chain, vesamenu ...)
REM %5 1-ᮧ ⢥ 㭪 ⠭ WindowsXP    isolinux.cfg

IF %1==No (
	ECHO LABEL Windows XP
	>>Temp\%3.cfg ECHO MENU LABEL Windows XP
	>>Temp\%3.cfg ECHO 	KERNEL /boot/isolinux/modules/%4.c32
	>>Temp\%3.cfg ECHO 	APPEND boot ntldr=/I386/SETUPLDR.BIN
	>>Temp\%3.cfg ECHO 	TEXT HELP
	>>Temp\%3.cfg ECHO 		 ⠭ Windows XP SP3
	>>Temp\%3.cfg ECHO 	ENDTEXT
	GOTO :EOF
)
SET z=1
REM  䠩 %2.txt
FOR /F "UseBackQ EOL=; Tokens=1,2* Delims==" %%j IN ("%WDir%\%1\%2.txt") DO (
	REM ࢠ ப %2.txt -  㭪
	IF "!z!"=="1" (
		IF "%2"=="menu" SET TITLE=%%j
		REM ஢ઠ 稥   ᫮ "(OEM)"
		REM ᫨  ᫮ "(OEM)",  । 㭪⮬  *** Warning ***  ***
		FOR /F "UseBackQ Tokens=1,2* Delims=()" %%m IN ('%%j') DO IF "%%n"=="OEM" (
			>>Temp\%3.cfg ECHO MENU SEPARATOR
			>>Temp\%3.cfg ECHO LABEL *** Warning ***  ***
			>>Temp\%3.cfg ECHO 	MENU LABEL *** Warning ***  ***
			>>Temp\%3.cfg ECHO 	MENU DISABLE
			>>Temp\%3.cfg ECHO MENU SEPARATOR
	 	)
		>>Temp\%3.cfg ECHO LABEL %%j
		>>Temp\%3.cfg ECHO 	MENU LABEL %%j
		>>Temp\%3.cfg ECHO 	KERNEL /boot/isolinux/modules/%4.c32
		IF "%5"=="1" (
			>>Temp\%3.cfg ECHO 	APPEND boot ntldr=/I386/SETUPLDR.BIN
		) ELSE (
			IF "%2"=="menu" (
				>>Temp\%3.cfg ECHO 	APPEND %1.cfg
			) ELSE (
				IF %2 EQU 0 >>Temp\%3.cfg ECHO 	APPEND boot ntldr=/%1/SETUPLDR.BIN
				IF %2 GTR 0 >>Temp\%3.cfg ECHO 	APPEND boot ntldr=/%1/SETUPLD%2.BIN
			)
		)
		>>Temp\%3.cfg ECHO 	TEXT HELP
	) ELSE (
		REM  ப %2.txt, ஬ ࢮ, - ᠭ 㭪
		>>Temp\%3.cfg ECHO 		%%j
	)
	SET /A z+=1
)
>>Temp\%3.cfg ECHO 	ENDTEXT
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeHeaderSubmenu
REM   
REM %1  䠩 䨣樨   ७ (VOLS.cfg, VOLD.cfg, VOLM.cfg)
REM %2  䠩,  ஬ ࠭ ࠧ, ࠭  梥 ⮢ ࠭ 롮 ⠭ Windows XP
REM %3    䠩  
REM %4    䠩 䮭 㭪 

>>Temp\%1.cfg ECHO DEFAULT /boot/isolinux/modules/vesamenu.c32
>>Temp\%1.cfg ECHO INCLUDE %2
>>Temp\%1.cfg ECHO FONT %3
>>Temp\%1.cfg ECHO MENU BACKGROUND %4
>>Temp\%1.cfg ECHO.
>>Temp\%1.cfg ECHO MENU TITLE %TITLE%
>>Temp\%1.cfg ECHO.
>>Temp\%1.cfg ECHO LABEL    
>>Temp\%1.cfg ECHO 	MENU DEFAULT
>>Temp\%1.cfg ECHO 	MENU LABEL    
>>Temp\%1.cfg ECHO 	KERNEL /boot/isolinux/modules/vesamenu.c32
>>Temp\%1.cfg ECHO 	APPEND isolinux.cfg
>>Temp\%1.cfg ECHO 	TEXT HELP
>>Temp\%1.cfg ECHO 		   
>>Temp\%1.cfg ECHO 	ENDTEXT
>>Temp\%1.cfg ECHO MENU SEPARATOR
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeWinntSetupldr
REM   SETUPLD.BIN + WINN.SIF
REM %1    ਡ⨢ ᪥  ࣠樨  (VOLS.cfg, VOLD.cfg, VOLM.cfg)
REM %2  - ᫮   䠩 SETUPLD.BIN  WINN.SIF ( 1  20)

REM  0.txt  䠩 業  SETUPLD.BIN 뢠 SETUPLDR.BIN
IF %2 EQU 0 (
	COPY /Y "%I386%\SETUPLDR.BIN" "%Distr%\%1\SETUPLDR.BIN">nul
	"%WDir%\Tools\LdrPatch.exe" "%Distr%\%1\SETUPLDR.BIN" /d:%1>nul
)
IF %2 GTR 0 (
	REM  ᮭ   䠩 業ਥ
	COPY /B "%WDir%\%1\WINN%2.SIF" + "%WDir%\Settings\userinfo.ini" "%Distr%\%1\WINN%2.SIF">nul

	REM  SETUPLDR.BIN  ⨧㧪.
	COPY /Y "%I386%\SETUPLDR.BIN" "%Distr%\%1\SETUPLD%2.BIN">nul
	"%WDir%\Tools\LdrPatch.exe" "%Distr%\%1\SETUPLD%2.BIN" /d:%1 /u:winn%2.sif>nul
)
DEL /F /Q "%Distr%\%1\*.log">nul
DEL /F /Q "%Distr%\%1\*.bak">nul

GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:DelDrivers
REM  ᥩ  ࠩ MASS storage.
REM %1    ਡ⨢ ᪥  ࣠樨  (VOLS.cfg, VOLD.cfg, VOLM.cfg)

IF EXIST Temp\txtsetup.del (
	>"%Distr%\%1\txtsetup1.sif" FINDSTR /V /I /X /L /G:Temp\txtsetup.del "%Distr%\%1\txtsetup.sif"
	DEL "%Distr%\%1\txtsetup.sif">nul
		REN "%Distr%\%1\txtsetup1.sif" "txtsetup.sif">nul
	)
	IF EXIST Temp\dosnet.del (
		>"%Distr%\%1\dosnet1.inf" FINDSTR /V /I /X /L /G:"Temp\dosnet.del" "%Distr%\%1\dosnet.inf"
		DEL /F /Q "%Distr%\%1\dosnet.inf">nul
		REN "%Distr%\%1\dosnet1.inf" "dosnet.inf">nul
	)
)
"%WDir%\Tools\INFCLEAN.EXE" "%Distr%\%1\txtsetup.sif">nul
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeUSB
REM  ਡ⨢  ⠭  USB-Flash

REM   ࠧ iso    ਡ⨢ (筮 WinSetupFromUSB_1-0-beta7)
SET USBISO=%TypeDistr%SP3
SET SrcDosPath=%I386%\..\
SET SrcDosDrive=%Distr%

REM  䠩 FSAUnPack.ini
IF %FSAUnPack%==0 (SET INI=%WDir%\Settings\setting.ini) ELSE (SET INI=Addons\%FSAUnPackName%\CopyCD\FSAUnPack.ini)
FOR /F "UseBackQ EOL=; Tokens=1,2* Delims==" %%i IN ("%INI%") DO IF %%i==DrvSource CALL SET DrvSource=%%~j
SET SrcDosPath=%USBPath%\%WINSETUP%\%USBISO%
SET SrcDosDrive=%USBPath%
FOR /F "UseBackQ EOL=; Tokens=1,2* Delims==" %%i IN ("%INI%") DO IF %%i==DrvSource CALL SET DrvSourceUSB=%%~j

REM  । ⮪ ᮧ ਡ⨢  ⠭  USB-Flash
IF EXIST "%USBPath%\" RD /S /Q "%USBPath%"
MD "%USBPath%\%WINSETUP%\%USBISO%"

REM ஢ ࠩ௠, ਡ⨢  㧮 ࠧ  䠩 syslinux
IF EXIST "%DrvSource%\" START "஢ ࠩ௠  ⠭  USB-Flash" /WAIT XCOPY /Y /S /E /H /R "%DrvSource%\*.*" "%DrvSourceUSB%\"
START "஢ ਡ⨢  ⠭  USB-Flash" /WAIT XCOPY /Y /S /E /H /R "%I386%\*.*" "%USBPath%\%WINSETUP%\%USBISO%\I386\"
IF EXIST %Distr%\$OEM$ START "஢  $OEM$" /WAIT XCOPY /Y /S /E /H /R "%Distr%\$OEM$\*.*" "%USBPath%\%WINSETUP%\%USBISO%\$OEM$\"
START "஢ 㧮 ࠧ  䠩 syslinux" /WAIT XCOPY /Y /S /E /H /R "%Distr%\BOOT\*.*" "%USBPath%\BOOT\"
DEL /F /Q "%USBPath%\BOOT\isolinux\isolinux.bin">nul
XCOPY /Q /Y /H /R "%Distr%\ADDONS.HTM" "%USBPath%\%WINSETUP%\%USBISO%\">nul
XCOPY /Q /Y /H /R "%Distr%\BOOTFONT.BIN" "%USBPath%\%WINSETUP%\%USBISO%\">nul
XCOPY /Q /Y /H /R "%Distr%\WIN*" "%USBPath%\%WINSETUP%\%USBISO%\">nul
XCOPY /Q /Y /H /R "%WDir%\Tools\mnt.exe" "%USBPath%\%WINSETUP%\%USBISO%\I386\">nul
ECHO  inf-䠩  USB-Flash
FOR %%i IN (SYSOC,SVCPACK) DO (
	EXPAND -R %USBPath%\%WINSETUP%\%USBISO%\I386\%%i.IN_ %USBPath%\%WINSETUP%\%USBISO%\I386\>nul
	"%WDir%\Tools\INFCLEAN.EXE" %USBPath%\%WINSETUP%\%USBISO%\I386\%%i.INF>nul
	DEL /F /Q "%USBPath%\%WINSETUP%\%USBISO%\I386\%%i.IN_
	MakeCab /D CompressionMemory=21 /D CompressionType=LZX /L "%USBPath%\%WINSETUP%\%USBISO%\I386" "%USBPath%\%WINSETUP%\%USBISO%\I386\%%i.INF">nul
	DEL /F /Q "%USBPath%\%WINSETUP%\%USBISO%\I386\%%i.INF
)
FOR %%i IN (Dosnet.inf,drvindex.inf,txtsetup.sif) DO ("%WDir%\Tools\INFCLEAN.EXE" %USBPath%\%WINSETUP%\%USBISO%\I386\%%i>nul)

IF NOT EXIST Temp\sfcfiles.dll IF EXIST Temp\KillWFP.lst (
	ECHO   Sfcfiles.dll.
	IF EXIST sfcfiles.dll.bak DEL /F /Q sfcfiles.dll.bak
	EXPAND -R "%USBPath%\%WINSETUP%\%USBISO%\I386\SFCFILES.DL_" Temp\>nul
	SFCPatch Temp\sfcfiles.dll Temp\KillWFP.lst>nul
	DEL /F /Q "%USBPath%\%WINSETUP%\%USBISO%\I386\SFCFILES.DL_"
	MakeCab /D CompressionMemory=21 /D CompressionType=LZX /L "%USBPath%\%WINSETUP%\%USBISO%\I386" Temp\sfcfiles.dll SFCFILES.DL_>nul
)

CALL :MakeUSBISO
CALL :MakeMIGRATE
CALL :MakeUSBConfig
CALL :MakeUSBFakeSetup

REM ஢ઠ   䫥誠 %Letter%
IF EXIST %Letter%: (
	REM ଠ஢ 䫥誨 
	IF %FormatUSB%==1 CALL :Format
	REM ⠭ 稪 syslinux
	IF %MakeBootUSB%==1 (
		ECHO ⠭ 稪 syslinux
		"%WDir%\Tools\USBTools\syslinux.exe" -a -m %Letter%:
	)	
	REM ஢ 䠩  䫥
	IF %CopyOnUSB%==1 (
		ECHO ஢ 䠩  䫥
		START "஢ 䠩  USB-Flash %Letter%:\" /WAIT XCOPY /Y /S /E /H /R "%USBPath%\*.*" "%Letter%:\"
		IF DEFINED Misc START "஢ ⥫ 䠩  USB-Flash" /WAIT XCOPY /Y /S /E /H /R "%Misc%\*" "%Letter%:\"
	)
)


GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeUSBISO
REM   ISO  ⠭  USB-Flash

REM ஢ 䠩   VOLS, VOLD  VOLM   Temp\ISO\
MD "Temp\ISO"
IF EXIST "%Distr%\VOLD\" XCOPY /Q /Y /S /E /H /R "%Distr%\VOLD\*.*" "Temp\ISO\VOLD\">nul
IF EXIST "%Distr%\VOLM\" XCOPY /Q /Y /S /E /H /R "%Distr%\VOLM\*.*" "Temp\ISO\VOLM\">nul
IF EXIST "%Distr%\VOLS\" XCOPY /Q /Y /S /E /H /R "%Distr%\VOLS\*.*" "Temp\ISO\VOLS\">nul
REM ஢ 室 䠩   I386   Temp\ISO\I386\, ᫨      VOLS, VOLD  VOLM
SET I386Folder=
IF NOT EXIST "%Distr%\VOLD\" IF NOT EXIST "%Distr%\VOLM\" IF NOT EXIST "%Distr%\VOLS\" (
	SET I386Folder=I386
	XCOPY /Q /Y /H /R "%Distr%\I386\NTDETECT.COM" "Temp\ISO\I386\">nul
	XCOPY /Q /Y /H /R "%Distr%\I386\SETUPLDR.BIN" "Temp\ISO\I386\">nul
	XCOPY /Q /Y /H /R "%Distr%\I386\TXTSETUP.SIF" "Temp\ISO\I386\">nul
	IF EXIST "%Distr%\I386\WINNT.SIF" XCOPY /Q /Y /H /R "%Distr%\I386\WINNT.SIF" "Temp\ISO\I386\">nul
)
XCOPY /Q /Y /H /R "%Distr%\BOOTFONT.BIN" "Temp\ISO\">nul

SET TXTSETUPTemp=Temp\ISO\TXTSETUP.SIF
FOR %%a IN (VOLS,VOLD,%VOLM%,!I386Folder!) DO (
	SET TXTSETUP=Temp\ISO\%%a\TXTSETUP.SIF

	CALL :CopyWINNT %%a

	REM   ᥪ権 [InputDevicesSupport.Load]  [InputDevicesSupport] ᥩ  usbehci, usbohci, usbuhci, usbhub, usbstor 
	REM   ᥪ樨[SetupData]  SetupSourcePath ="\"
	>>%TXTSETUPTemp% FINDSTR /V /R /C:"usb[eou]hci *=" /C:"usbhub *=" /C:"usbstor *=" /C:"SetupSourcePath *=" !TXTSETUP!

	REM   ᥪ樨 [BootBusExtenders]  [BootBusExtenders.Load] ᥩ  usbehci, usbohci, usbuhci, usbhub, usbstor 
	>>%TXTSETUPTemp% ECHO [BootBusExtenders]
	>>%TXTSETUPTemp% FINDSTR /R /C:"usb[eou]hci *= *\"" /C:"usbhub *= *\"" /C:"usbstor *= *\"" !TXTSETUP!
	>>%TXTSETUPTemp% ECHO [BootBusExtenders.Load]
	>>%TXTSETUPTemp% FINDSTR /R /C:"usb[eou]hci *= *u" /C:"usbhub *= *u" /C:"usbstor *= *u" !TXTSETUP!

	REM   ᥪ [SetupData] 室 ᥩ  usbehci, usbohci, usbuhci, usbhub, usbstor 
	>>%TXTSETUPTemp% ECHO [SetupData]
	>>%TXTSETUPTemp% ECHO SetupSourcePath ="\%WINSETUP%\%USBISO%\"
	>>%TXTSETUPTemp% ECHO SetupSourceDevice=\ArcName\multi^(0^)disk^(0^)rdisk^(1^)partition^(1^)
	>>%TXTSETUPTemp% ECHO BootPath="\%WINSETUP%\%USBISO%\I386\"
	>>%TXTSETUPTemp% ECHO BootDevice="multi(0)disk(0)rdisk(1)partition(1)"
	
	REM   ᥪ [SourceDisksFiles] 室   mnt.exe 
	>>%TXTSETUPTemp% ECHO [SourceDisksFiles]
	>>%TXTSETUPTemp% ECHO mnt.exe=1,,,,,,,2,0,0
	>>%TXTSETUPTemp% ECHO setup.cmd=1,,,,,,,2,0,0
	>>%TXTSETUPTemp% ECHO setupWST.exe=1,,,,,,,2,0,0

	"%WDir%\Tools\INFCLEAN.EXE" %TXTSETUPTemp%>nul
	COPY /Y %TXTSETUPTemp% !TXTSETUP!>nul
	DEL /F /Q %TXTSETUPTemp%>nul
)

REM   ISO
START /WAIT %WDir%\Tools\CDIMAGE.EXE -n -h -m -p -x -oi -yd -l"%WINSETUP%" Temp\ISO\ "%USBPath%\%WINSETUP%\%USBISO%.ISO">nul

GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CopyWINNT
REM ६饭 Winn.sif  VOLS, VOLD  VOLM  %USBPath%\%WINSETUP%\%USBISO%\I386\   SETUPLD.BIN
REM %1  - ᫮   䠩 SETUPLD.BIN  WINN.SIF ( 1  20)

FOR /L %%i IN (1,1,20) DO (
	IF EXIST Temp\ISO\%1\WINN%%i.SIF (
		SET N=%%i

		REM ஢ Winn.sif  %USBPath%\%WINSETUP%\%USBISO%\I386\, ᫨ ⠬  ⠪  䠩
		IF NOT EXIST "%USBPath%\%WINSETUP%\%USBISO%\I386\WINN%%i.SIF" (
			XCOPY /Q /Y /H /R Temp\ISO\%1\WINN%%i.SIF "%USBPath%\%WINSETUP%\%USBISO%\I386\">nul
		) ELSE (
			REM ᫨ Winn.sif   %USBPath%\%WINSETUP%\%USBISO%\I386\,  ஢ઠ  筮
			FC /C /W Temp\ISO\%1\WINN%%i.SIF "%USBPath%\%WINSETUP%\%USBISO%\I386\WINN%%i.SIF">nul
			REM ᫨ Winn.sif  VOLS, VOLD  VOLM ⫨砥  Winn.sif
			REM  %USBPath%\%WINSETUP%\%USBISO%\I386\,  २ Winn.sif VOLS, VOLD  VOLM  ஢
			IF !ERRORLEVEL!==1 (
				SET z=1 && FOR %%j IN ("%USBPath%\%WINSETUP%\%USBISO%\I386\WINN*.SIF") DO SET /A z+=1
				COPY /Y Temp\ISO\%1\WINN%%i.SIF "%USBPath%\%WINSETUP%\%USBISO%\I386\WINN!z!.SIF">nul
				SET N=!z!
			)
		)
		REM   SETUPLD.BIN + WINN.SIF  VOLS, VOLD  VOLM
		DEL /F /Q Temp\ISO\%1\WINN%%i.SIF>nul
		DEL /F /Q Temp\ISO\%1\SETUPLD%%i.BIN>nul

		REM  SETUPLDR.BIN  ⨧㧪.
		COPY /Y "%I386%\SETUPLDR.BIN" "Temp\ISO\%1\SETUPLD%%i.BIN">nul
		"%WDir%\Tools\LdrPatch.exe" "Temp\ISO\%1\SETUPLD%%i.BIN" /d:%1 /u:winn!N!.sif>nul
		DEL /F /Q "Temp\ISO\%1\*.log">nul
		DEL /F /Q "Temp\ISO\%1\*.bak">nul

	)
)
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeMIGRATE
REM  䠩 MIGRATE.INF
REG EXPORT HKEY_LOCAL_MACHINE\SYSTEM\MountedDevices Temp\MountedDevices.reg>nul
%WDir%\Tools\Reg2Inf.EXE /forceascii Temp\MountedDevices.reg Temp\MountedDevices.inf>nul
TITLE  ⨧㧮筮 ᪠.	koros aka ya158 (c) 2015
FOR /F "UseBackQ EOL=; Tokens=4* Delims=," %%a IN (`FINDSTR "DosDevices\%Letter%" Temp\MountedDevices.inf`) DO (
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO [Version]
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO Signature = "$Windows NT$"
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO.
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO [Addreg]
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO HKLM,"SYSTEM\MountedDevices",,0x00000010
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO HKLM,"SYSTEM\MountedDevices","\DosDevices\U:",0x00030001,\
	>>"%USBPath%\%WINSETUP%\%USBISO%\I386\MIGRATE.INF" ECHO %%b
)
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeUSBConfig
REM  䠩   syslinux

REM ६  isolinux  syslinux
PUSHD "%USBPath%\BOOT"
REN isolinux syslinux
POPD
IF EXIST Temp\isolinux1.cfg COPY /Y Temp\isolinux1.cfg "%USBPath%\BOOT\syslinux\isolinux.cfg">nul
REN "%USBPath%\BOOT\syslinux\isolinux.cfg" syslinux.cfg
REM  ⥩   䠩  isolinux  syslinux
FOR %%i IN ("%USBPath%\BOOT\syslinux\*.cfg") DO CALL :Replace %%i "isolinux" "syslinux"
REM    㧪  ࢮ HDD
CALL :Replace "%USBPath%\BOOT\syslinux\syslinux.cfg" "KERNEL /boot/syslinux/modules/chain.c32" "KERNEL /boot/grub.exe"
CALL :Replace "%USBPath%\BOOT\syslinux\syslinux.cfg" "APPEND hd0 0" "APPEND --config-file=find --set-root --ignore-floppies --ignore-cd /bootmgr || find --set-root --ignore-floppies --ignore-cd /ntldr;map (hd0) (hd1);map (hd1) (hd0);map --hook;rootnoverify (hd0);chainloader (hd0)+1"

REM   ᪠ ⠭ Windows XP
FOR %%a IN (VOLS,VOLD,%VOLM%,!I386Folder!) DO (
	IF %%a==I386 (SET CFG=syslinux) ELSE (SET CFG=%%a)
	IF EXIST "%USBPath%\BOOT\syslinux\!CFG!.cfg" (
		CALL :Replace "%USBPath%\BOOT\syslinux\!CFG!.cfg" "KERNEL /boot/syslinux/modules/chain.c32" "KERNEL /boot/grub.exe"
		CALL :Replace "%USBPath%\BOOT\syslinux\!CFG!.cfg" "APPEND boot ntldr" "APPEND --config-file"
		CALL :Replace "%USBPath%\BOOT\syslinux\!CFG!.cfg" "/%%a/" "root (hd0,0);map --mem /%WINSETUP%/%USBISO%.ISO (0xff);map (hd0) (hd1);map (hd1) (hd0);map --hook;root (0xff);chainloader /%%a/"
	)
)
REM ன ᪨ ⮢  
CALL :CFG "%USBPath%\BOOT\syslinux"

GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:MakeUSBFakeSetup
REM ஢ ⥫쭮 䥩-⠯
REM 室  । 㪢 USB-HDD  ᪮ 䥩-⠯  Mr dUSHA
EXPAND "%USBPath%\%WINSETUP%\%USBISO%\I386\setup.ex_" "%USBPath%\%WINSETUP%\%USBISO%\I386\setupwst.exe">nul
REM REN "%USBPath%\%WINSETUP%\%USBISO%\I386\setup.exe" setupwst.exe
XCOPY /Q /Y /H /R "%WDir%\Tools\setup.ex_" "%USBPath%\%WINSETUP%\%USBISO%\I386\">nul
>>"%USBPath%\%WINSETUP%\%USBISO%\I386\setup.cmd" ECHO set TAGFILE=\%WINSETUP%\%USBISO%
>>"%USBPath%\%WINSETUP%\%USBISO%\I386\setup.cmd" TYPE "%WDir%\Tools\setup.cmd"

GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Format
REM ଠ஢ 䫥誨 
SET Drive=0
REM ஢ઠ  䫥襪  ⥬

"%WDir%\Tools\USBTools\RMPARTUSB.exe" list>nul
IF %errorlevel% GTR 0 GOTO :err1
ECHO ।  䫥誨 %Letter%:
FOR /F "UseBack Tokens=2" %%A IN (`""%WDir%\Tools\USBTools\RMPARTUSB.exe" list|FINDSTR /EILC:"%Letter%:""`) DO SET Drive=%%A

ECHO ଠ஢ USB Flash %Letter%:
SET SURE=
IF %SilentFormatUSB%==1 SET SURE=SURE
 NOT DEFINED FileSystem SET FileSystem=FAT32
"%WDir%\Tools\USBTools\RMPARTUSB.exe" DRIVE=%Drive% XP %FileSystem% %SURE% VOLUME=%VolUSB%
IF %errorlevel% GTR 0 GOTO :err2
GOTO :EOF

:err1
ECHO    USB-Flash !!!
GOTO :EOF
:err2
ECHO 訡 ଠ஢ !!!
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:Replace
REM  ப  䠩
REM %1 - 䠩
REM %2 - ப,  
REM %3 - ப,   
FOR /F "Tokens=1* Delims=]" %%A IN ('TYPE "%~1"^|FIND /N /V ""') DO (
	FOR /F "Delims=" %%C IN ("%~2") DO (
		FOR /F "Delims=" %%D IN ("%~3") DO (
			SET CurrentLine=%%B
			IF DEFINED CurrentLine (
				SETLOCAL ENABLEDELAYEDEXPANSION
				>>Temp\TMP.TXT ECHO;!CurrentLine:%%C=%%D!
				ENDLOCAL
			) ELSE (>>Temp\TMP.TXT ECHO/)
		)
	)
)
MOVE /Y Temp\TMP.TXT %1>nul
GOTO :EOF

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:CFG
REM   *.cfg ப, । ࠧ   ᪨ ⮢
REM %1 -   䠩 *.cfg
FOR %%a IN ("%~1\*.cfg") DO (
	SET ROW=0
	FOR /F "UseBackQ EOL=#" %%i IN (`"TYPE "%%a"|FINDSTR /ILC:"MENU LABEL" /ILC:"MENU SEPARATOR""`) DO (
		SET /A ROW+=1
		SET /A HELPMSGROW=!ROW!+5
	)
	IF NOT !ROW!==0 (
		>>%%a ECHO #⢮ ப 
		>>%%a ECHO MENU ROWS	!ROW!
		>>%%a ECHO #⢮ ப 
		>>%%a ECHO MENU HELPMSGROW	!HELPMSGROW!
		>>%%a ECHO #  ப,  ன । 
		>>%%a ECHO MENU CMDLINEROW	!HELPMSGROW!

	)
	FOR /F "UseBackQ Tokens=2*" %%i IN (`"TYPE "%%a"|FINDSTR /BILC:"MENU BACKGROUND""`) DO (
		SET "Resolution="
		SET ImagePath=%%j
		SET ImagePath=!ImagePath:/=\!
		FOR /F "UseBackQ Tokens=1,2" %%A IN (`""%WDir%\Tools\ImageResolution.EXE" "%~1\..\..\!ImagePath!""`) DO (
			SET Resolution=%%A %%B
			SET /A WIDTH=%%A/8-2

		)
		IF DEFINED Resolution (
			>>%%a ECHO #襭 ࠭
			>>%%a ECHO MENU RESOLUTION !Resolution!
			>>%%a ECHO #ਭ , ⢮ ᨬ
			>>%%a ECHO MENU WIDTH !WIDTH!
		) ELSE (
			>>%%a ECHO #ਭ , ⢮ ᨬ
			>>%%a ECHO MENU WIDTH 78
		)
	)
)
GOTO :EOF
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
