|  | 
| 原来是这样的 !BAT
 debug off
 checkrange 20111212:-1 read 0x8278 || call :error Not supported grub4dos version!
 set NTBOOT=%~f0
 setlocal
 set ISO_TYPE=
 set ISO_INST=
 set NTPATH=
 echo
 echo NTBOOT by chenall 2013-07-22,$[0101]http://chenall.net
 goto %~1 || goto :NTBOOT_HELP
 
 :FIRADISK.E820
 :WINVBLK.E820
 :VBOOT.E820
 :PE1.E820
 if "%~1"=="" && exit
 call Fn.15 "%~1" "0" && set /a e820=%~1 && call if /i "%e820^%"=="0" && exit
 checkrange 0:-1 calc %e820% || exit
 map --e820cycles=%~1 && map --rehook
 exit
 
 :e820
 shift 1
 set e820=%~1
 if not exist e820 && goto :NTBOOT_HELP
 call Fn.15 "%~1" "0" && set /a e820=%~1 && call if /i "%e820^%"=="0" && goto :NTBOOT_HELP
 checkrange 0:-1 calc %e820% || goto :NTBOOT_HELP
 map --e820cycles=%e820% && map --rehook && shift 1
 set e820= && goto %~1 || goto :NTBOOT_HELP
 
 :menu
 echo %~f0 > (md)0x20000+1
 cat %NTBOOT%.MOD/setf0 > (md)0x20002+1 || echo -n
 configfile %NTBOOT%.LST/MENU.LST
 exit
 
 ::检测下一个文件。在使用call :CHECK_FILE %FILE1% %FILE2% 之类的情况下会用到
 :CHECK_NEXT_FILE
 set tmp=%~2
 if not exist tmp && goto :input_file
 shift
 if "%~0"=="%~1" && goto :CHECK_NEXT_FILE
 ::检查/查找文件
 :CHECK_FILE
 echo -e Checking file $[0107]%~1 ...
 set file=%~1
 set tmp=%~pnx1
 cat --length=0 %~f1 > nul && root %~d1 > nul ! cat --length=0 %~pnx1 > nul && echo -n ! find --set-root cat --length=0 %~pnx1 > nul || goto :CHECK_NEXT_FILE
 goto :eof
 
 :input_file
 ::获取用户输入的文件,
 echo
 echo File not found or not support: $[0105]%file%
 echo
 echo -e Please enter a new path to the file: $[0104]%~x1
 set file=
 set /p:5 file=NTBOOT>
 if not exist file goto :exit
 echo -n > (md)0x28150+28
 echo %file% > (md)0x28150+28
 cat (md)0x28150+28 | set tmp=
 if not exist tmp && goto :input_file
 set tmp=%~x1
 set tmp=%tmp:~0,3%
 call Fn.11 "%file%" "%tmp%" || goto :input_file
 echo
 command %NTBOOT%.CMD/EMPPATH file="%file%"
 call :CHECK_FILE %file%
 exit
 
 :NT5
 :NT6
 :PE1
 ::检测需要的模块
 insmod %NTBOOT%.MOD/NTBOOT.MOD || call :error Missing module NTBOOT.MOD...
 ::映射NTBOOT启动镜像
 set /u file=NTBOOT.%~1
 map --mem %NTBOOT%.MOD/%file% (rd) || call :error Missing module %file%...
 
 :NTBOOT_START
 ::设置默认WINDOWS路径
 if not exist WinDir set WinDir=WINDOWS
 set boot_cfg=
 shift
 set file=%~1
 set tmp=/%WinDir%
 ::如果没有加参数或参数是一个磁盘分区
 if not exist file && goto %~0.HDD
 if "%~d1"=="%~1" && goto %~0.HDD
 ::以上是NT5或NT6硬盘启动
 if /i "%~0"=="pe1" && set PDIR=WXPE && goto :PE1_BOOT
 command %NTBOOT%.CMD/EMPPATH file="%file%"
 call :CHECK_FILE %file%
 ::转到对应的启动类别,比如NT5.IMG_BOOT,NT6.WIM_BOOT,NT6.VHD_BOOT
 goto %~0%~x1_BOOT
 
 :NT5.HDD
 echo -e Searching NT5.X on Hard Disk(/%WinDir%)
 if exist file && root %~1 ! find --set-root --devices=h /%WinDir%/system32/ntoskrnl.exe cat --locate=\0\x35\0\x2E /%WinDir%/system32/version.dll
 goto :NT5_BOOT
 :NT6.HDD
 echo -e Searching NT6.X on Hard Disk(/%WinDir%)
 if exist file && root %~1 ! find --set-root --devices=h /%WinDir%/system32/winload.exe
 goto :NT6_BOOT
 
 :ISO_INST64
 set ISO_TYPE=amd64
 :ISO_INST
 shift 1
 ::以下命令用于生成一个空白的软盘(fd0)
 ::echo > (md)0x200+2
 ::write --offset=0xb (md)0x200+3 \x00\x02\x01\x01\x00\x01\x70\x00\x10\x00\xfd\x01\x00\x08\x00\x01
 ::write 0x401FE 0xAA55
 ::write 0x40200 0xfffffe
 ::map --mem (md)0x200+2 (fd0)
 map --status=0 || map --mem %NTBOOT%.IMG/EMPTY.IMG (0) && map --rehook
 ::转换到大写
 set /u boot=%~1.IMG
 set boot=%NTBOOT%.IMG/%boot%
 ::自动加载对应驱动的软盘镜像到(fd1)
 map --mem %boot% (fd1) || call :Error Missing Module %boot%...
 ::如果用户指定了floppy的话将会由用户指定的镜像代替
 set boot=cdrom
 set ISO_INST=%~1
 goto :%~1
 
 ::::AUTO_CONFIG::自动参数配置接口::::::::::::::::::::::::::::::::::::::::::::::::
 ::可以自动配置FIRADISK或VBOOT的启动参数,扩展后也可以设置其它参数。
 ::调用方法: call :AUTO_CONFIG VBOOT|FIRADISK [options...]
 ::其中options根据配置类型的不同而不同,但有一个参数是相同的boot
 ::注:除了boot和opt参数外其它的参数都应该是 type=FILE,例如cdrom=/cd/xp.iso或harddisk=(hd0,0)/test.img之类的
 :AUTO_CONFIG
 set ISO_INST=%~1
 :AUTO_CONFIG_LOOP
 shift
 shift
 ::
 ::两个shift之后.%~0就是之前的%~2,%~1就是之前的%~3
 ::例子: call :AUTO_CONFIG VBOOT harddisk=/test/test.vhd
 ::没有shift之前%~0是:AUTO_CONFIG,两次shift就去掉了前面的两个参数,变成了harddisk.
 ::
 if "%~1"=="" && exit
 ::如果参数是boot,则设置boot参数。
 if /i "%~0"=="boot" && set boot=%~1 && goto :AUTO_CONFIG_LOOP
 ::如果参数是opt/addons,不调用文件查找检测功能
 set file=%~1
 if /i "%~0"=="opt" || if /i "%~0"=="addons" || if /i "%~0"=="e820" || call :AUTO_CONFIG_FILE
 if /i "%~x1"==".iso" && call Fn.11 "%~n1" "64" && set ISO_TYPE=amd64 && echo -e %ISO_INST%: ISO_TYPE = amd64
 ::根据不同参数调用不同的函数,像FIRADISK.HARDDISK
 echo -e %ISO_INST%: %~0=%file%
 call :%ISO_INST%.%~0 %file%
 ::下一个参数
 goto :AUTO_CONFIG_LOOP
 :AUTO_CONFIG_FILE
 command %NTBOOT%.CMD/EMPPATH file="%file%"
 call :CHECK_FILE %file%
 goto :eof
 
 :WINVBLK
 call :AUTO_CONFIG %*
 goto :WINVBLK_BOOT
 
 :WINVBLK.CDROM
 map %~1 (0xCD) || map --mem %~1 (0xCD)
 exit
 :WINVBLK.FLOPPY
 map --mem %~1 (fd0)
 exit
 :WINVBLK.HARDDISK
 map %~1 (hd0) || map --heads=255 --sectors-per-track=63 %~1 (hd0)
 map (hd0) (hd)
 map --harddrives=1
 exit
 
 :FIRADISK.@HARDDISK
 :WINVBLK.@HARDDISK
 map --mem --heads=0 --sectors-per-track=0 %~1 (hd0)
 map (hd0) (hd)
 map --harddrives=1
 exit
 :FIRADISK.@CDROM
 :WINVBLK.@CDROM
 map --mem %~1 (0xCD)
 exit
 
 :FIRADISK.#HARDDISK
 :WINVBLK.#HARDDISK
 map --mem --top --heads=0 --sectors-per-track=0 %~1 (hd0)
 map (hd0) (hd)
 map --harddrives=1
 exit
 :FIRADISK.#CDROM
 :WINVBLK.#CDROM
 map --mem --top %~1 (0xCD)
 exit
 
 
 :FIRADISK
 ::使用内存地址0x40000开始处的10个扇区存放FIRADISK参数。
 ::echo -n > (md)0x210+1
 set fira.opt=
 call :AUTO_CONFIG %*
 ::如果内存地址0x40020的数值非0,则说明有写入了参数.
 ::read 0x40020 && map --mem (md)0x200+16 (99)
 ::echo -e \" >> (md)0x210+1
 map --hook
 if not exist fira.opt && goto :FIRADISK_BOOT
 cat --locate=###### --number=1 (fd1)/%ISO_TYPE%/TXTSETUP.OEM > nul || call :error firadisk.img file error..
 set offset=%?%
 write --offset=%offset% (fd1)/%ISO_TYPE%/TXTSETUP.OEM value=Parameters,StartOptions,REG_SZ,"%fira.opt%"\r\n
 cat --skip=%offset% --locate=/ --replace=\\ (fd1)/%ISO_TYPE%/TXTSETUP.OEM
 goto :FIRADISK_BOOT
 
 :FIRADISK_BOOT
 :WINVBLK_BOOT
 map --rehook
 ::保证(fd1)的位置靠后.详情:http://bbs.wuyou.net/forum.php?mod=viewthread&tid=203313
 call :SwapFloppy || echo -n
 if exist BOOT && %BOOT%
 if /i "%boot%"=="cdrom" && chainloader (0xCD) && boot
 if /i "%boot%"=="harddisk" && chainloader (hd0)+1 && boot
 if /i "%boot%"=="floppy" && chainloader (fd0)+1 && boot
 exit
 
 ::软盘重排
 :SwapFloppy
 map --status=0 || map --status=1 || exit
 setlocal
 ::A盘FIRADISK/WINVBLOCK,无B盘。
 map --status=1 |; cat --length=0 (0)/txtsetup.oem || exit ! cat --length=0 (0)/firadisk.inf && exit ! cat --length=0 (0)/winvblk.inf && exit
 ::A盘空,B盘SRS。
 map --status=1 |; map (0)+1 (1) && map --mem %NTBOOT%.IMG/EMPTY.IMG (0) && map --rehook ! exit
 ::A盘SRS,无B盘。
 map --status=0 |; cat --length=0 (1)/txtsetup.oem && map (1)+1 (0) && map --unmap=1 && map --rehook && exit ! exit
 ::A盘SRS,B盘FIRADISK/WINVBLOCK。
 map --status=1 || exit
 ls (1)/ > nul || map --unmap=1 && map --rehook && exit
 cat --length=0 (1)/firadisk.inf |; cat --length=0 (0)/firadisk.inf && map (0) (1) && map (1) (0) && map --rehook ! echo -n
 cat --length=0 (1)/winvblk.inf |; cat --length=0 (0)/winvblk.inf && map (0) (1) && map (1) (0) && map --rehook ! echo -n
 ::B盘firadisk安装系统,A盘仿真内存的起始地址一定要高出B盘,否则会提示插入A盘
 ::B盘winvblok安装系统,A盘仿真内存的起始地址一定要低于B盘,否则会提示插入A盘
 ::http://bbs.wuyou.net/forum.php?m ... p;extra=&page=1
 map --status=1 || exit
 set /a addr1=%?% > nul
 map --status=0 || exit
 set /a addr0=%?% > nul
 if %addr0%>=%addr1% && set fdn=0 ! set fdn=1
 if %fdn%==0 && cat --length=0 (1)/firadisk.inf && exit ! if %fdn%==1 && cat --length=0 (1)/winvblk.inf && exit
 map (%fdn%)+1 (rd) && map --mem (rd)+1 (%fdn%) && map --rehook ! echo -n
 endlocal
 exit
 
 ::FIRADISK 参数自动设置,可设置CDROM,FLOPPY,HARDDISK等参数
 :FIRADISK.CDROM
 ::优先使用直接映射,失败再尝试内存映射。
 set fira.opt=cdrom,vmem=find:%~pnx1;%fira.opt%
 map %~1 (0xCD) || map --mem %~1 (0xCD)
 exit
 :FIRADISK.FLOPPY
 map --mem %~1 (fd0)
 exit
 :FIRADISK.HARDDISK
 map %~1 (hd0) || map --heads=255 --sectors-per-track=63 %~1 (hd0)
 map (hd0) (hd)
 set fira.opt=disk,vmem=find:%~pnx1;%fira.opt%
 exit
 :FIRADISK.OPT
 set fira.opt=%~1;%fira.opt%
 exit
 ::以上是FIRADISK 参数自动设置
 
 :VBOOT
 if not exist (0xfd)/vbootldr && map --mem %NTBOOT%.MOD/VBOOT.ISO (0xfd) || call :Error Missing Module VBOOT...
 map --hook && echo VBOOT module loaded successfully.
 echo -n vboot  > (0xfd)/vboot/grub/grub.cfg
 if exist ISO_INST goto :VBOOT_INST
 shift
 ::::::::::非ISO_INST是默认启动磁盘为harddisk::::::::::::::::::::
 ::::::::::调用AUTO_CONFIG来配置VBOOT的启动参数:::::::::::::::::
 set boot=harddisk
 call :AUTO_CONFIG vboot harddisk=%*
 goto :VBOOT_BOOT
 ::使用VBOOT来安装系统,先映射VBOOT.IMG
 :VBOOT_INST
 call :AUTO_CONFIG %*
 goto :VBOOT_BOOT
 
 ::::以下内容为VBOOT的启动参数自动配置:::::::不了解请不要改变,否则会启动失败::::::::
 :VBOOT.CDROM
 :VBOOT.HARDDISK
 :VBOOT.FLOPPY
 ::VBOOT.TAKE_SNAPSHOT //
 uuid ()
 ::VBOOT比较笨,必须小写。。
 set /l UUID=%?%
 set /l tmp=%~x0
 echo -e -n %tmp:~1%=(UUID=%UUID%)"%~pnx1"  >> (0xfd)/vboot/grub/grub.cfg
 exit
 :VBOOT.OPT
 echo -e -n %~1  >> (0xfd)/vboot/grub/grub.cfg
 exit
 ::::以上内容为VBOOT的启动参数自动配置:::::::
 
 :VBOOT_BOOT
 echo -e boot=%boot%\nboot >> (0xfd)/vboot/grub/grub.cfg
 if exist BOOT && %BOOT%
 ::map --unmap=11
 ::map --rehook
 ::call :SwapFloppy
 kernel (0xfd)/vbootldr
 boot
 exit 90
 
 :NT6.VHDX_BOOT
 :NT6.VHD_BOOT
 ::固定用法,本软盘对应的BCD文件专用.下同
 set boot_cfg=:BCD_CFG_VHD#WIM b VHD
 goto :NT6_BOOT
 
 :NT6.WIM_BOOT
 set boot_cfg=:BCD_CFG_VHD#WIM a WIM
 goto :NT6_BOOT
 
 :NT5.IMG_BOOT
 set boot_cfg=:NT5_RAM_CFG
 goto :NT5_BOOT
 
 ::GET_ARC_PATH,把一个路径转换为ARC格式表示
 :GET_ARC_PATH
 checkrange 0:1 read 0x82a0 && goto :FD_ARC
 ::checkrange 0x9E:0xFF read 0x82a0 && goto :CD_ARC
 :HD_ARC
 DISKID ret=0x60000 || goto :CD_ARC
 set /a R=*0x60000>>24&0xFF
 set /a P=*0x60000>>16&0xFF
 echo multi(0)disk(0)rdisk(%R%)partition(%P%)%tmp% > (md)0x3000+4
 :SET_ARC_PATH
 ::替换GRUB4DOS路径的/为WINDOWS路径\
 cat --locate=/ --replace=\\ (md)0x3000+4
 ::设置变量ARC_PATH
 cat (md)0x3000+4 | set ARC_PATH=
 goto :eof
 
 :FD_ARC
 set /a R=*0x82A0&0xFF
 echo multi(0)disk(0)fdisk(%R%)%tmp% > (md)0x3000+4
 ::如果是(fdx,y)的形式,映射成(fdx)
 checkrange 0xFFFFFF00 read 0x829b || map +1 ()
 goto :SET_ARC_PATH
 
 :CD_ARC
 set /a R=*0x82A0&0xFF
 echo multi(0)disk(0)cdrom(%R%)%tmp% > (md)0x3000+4
 goto :SET_ARC_PATH
 
 :NATIVE_CFG
 echo cd ?:%~pnx1 > (rd)/NATIVE.CFG
 cat --locate=/ --replace=\\ --length=256 (rd)/NATIVE.CFG
 exit
 
 :PE1_BOOT
 ######以下三行是提供给NATIVE核心的PE使用的######################
 echo -e @echo off\r\ncd ?:%~p1\r\ncd ?:%~pnx1 > (rd)/NATIVE.CFG
 ################################################################
 cat --locate=/ --replace=\\ --length=256 (rd)/NATIVE.CFG
 if /i "%file%"=="%~x1" && set file=/boot/imgs/boot%~1
 :PE1.OPTIONS
 if /i "%~2"=="PDIR" && set PDIR=%~3
 if /i "%~2"=="OPTIONS" && set option=%~3
 if /i "%~2"=="NTPATH" && set NTPATH=%~3
 if /i "%~2"=="Addons" && call :Addons %~3 pe
 if /i "%~2"=="e820" && call :PE1.E820 %~3
 shift 2
 shift 2
 if not "%~2"=="" goto :PE1.OPTIONS
 command %NTBOOT%.CMD/EMPPATH file="%file%"
 call :CHECK_FILE %file% %file:~0,-1%_
 if not exist NTPATH && set NTPATH=%tmp%
 call :NATIVE_CFG %NTPATH%
 ::如果是ISO格式就添加一个参数/rdexportascd
 if /i "%tmp:~-3,2%"=="is" && set option=/rdexportascd %option%
 if /i "%tmp:~-3%"=="wim" && set option=%option% /rdimageoffset=8192 /rdimagelength=3161088
 call :GET_ARC_PATH
 echo -e [SetupData]\r\nBootDevice="ramdisk(0)" > (rd)/BOOT.INI
 echo BootPath=\%PDIR%\SYSTEM32\  >> (rd)/BOOT.INI
 echo OsLoadOptions="/minint /fastdetect %option% /rdpath=%ARC_PATH%" >> (rd)/BOOT.INI
 ::消除多余的空字符,否则会启动失败
 cat --locate=\0 --replace=; (rd)/BOOT.INI
 ::修改默认路径
 if /i not %PDIR%=="I386" && write --offset=0x2A4FB (rd)/SETUPLDR.BIN %PDIR%
 ::修改默认WINNT.SIF文件名
 write --offset=0x2a432 (rd)/SETUPLDR.BIN BOOT.INI\0
 if /i "%DEBUG%"=="on" && cat (rd)/BOOT.INI && checkrange 0x11b pause --test-key && goto :exit
 if exist BOOT && %BOOT%
 map --mem (rd)+1 (0xfd)
 ::map --unmap=11
 map --rehook
 call :SwapFloppy || echo -n
 chainloader (0xfd)/SETUPLDR.BIN
 boot
 exit
 
 :BCD_CFG_VHD#WIM
 ::本软盘BCD对应的特定语句,修改默认启动项
 write --offset=0x343C (rd)/BOOT/BCD %~1
 write --offset=0x35DC (rd)/BOOT/BCD %~1
 ::未公开功能。把变量的值ASCII字符串使用UNICODE编码放到内存0x40000位置。编码方式\xH1\0\XH2\0.....
 WENV get tmp=0x40000
 ::替换路径字符中的/为\
 cat --locate=\\x2F --replace=\\x5C (md)0x200+3
 ::本软盘BCD对应的特定语句,修改文件路径
 cat --locate=\\%~2_ --number=2 (rd)/BOOT/BCD | call :BCD_CFG_PATH=
 exit
 
 :BCD_CFG_PATH
 WENV call write --offset=0x%~1 (rd)/BOOT/BCD *0x40000$
 WENV call write --offset=0x%~2 (rd)/BOOT/BCD *0x40000$
 exit
 
 :NT5_RAM_CFG
 set default=ramdisk(0)/%WinDir%
 echo %default%="ramdisk" #fastdetect #noguiboot %opt% #rdpath=%ARC_PATH% >> (rd)/BOOT.INI
 exit
 
 :NT5_HDD_CFG
 set default=%ARC_PATH%
 echo %default%="NT5" #fastdetect %opt% #NoExecute=AlwaysOff #PAE  >> (rd)/BOOT.INI
 exit
 
 :NT5_BOOT
 set /a cur_drv=*0x82A0&0x7F
 set /a cur_pri=*0x829C>>16&0xFFFF
 clear
 echo
 echo -e $[0105]  Will Boot NT5.X From $[0102](hd%cur_drv%,%cur_pri%)$[0106]%tmp%
 echo
 echo -e $[0101]  Press $[1103]Esc$[0101] to quit!
 checkrange 0x11b pause --wait=3 --test-key && goto :exit
 call :GET_ARC_PATH
 shift 1
 set opt=%*
 echo [operating systems] > (rd)/BOOT.INI
 if exist boot_cfg && call %boot_cfg% ! call :NT5_HDD_CFG
 echo [boot loader] >> (rd)/BOOT.INI
 echo timeout=0 >> (rd)/BOOT.INI
 echo default=%default% >> (rd)/BOOT.INI
 ::替换GRUB4DOS格式路径的\为/
 cat --locate=/ --replace=\\ (rd)/BOOT.INI
 ::替换参数,前面写入的参数中的/都是使用#代替的。
 cat --locate=# --replace=/ (rd)/BOOT.INI
 ::消除空字符(替换为;)
 cat --locate=\0 --replace=; (rd)/BOOT.INI
 if /i "%DEBUG%"=="on" && cat (rd)/BOOT.INI && checkrange 0x11b pause --test-key && goto :exit
 if exist BOOT && %BOOT%
 map --mem (rd)+1 (0xfd)
 ::map --unmap=11
 map --rehook
 chainloader (0xfd)/NTLDR
 boot
 exit
 
 :NT6_NO_CONFIG
 set /a offset=0x%~1+0x14
 write --offset=%offset% (rd)/BOOT/BCD \0
 exit
 
 :BOOTMGR
 set TMP_ROOT=%@root%
 cat --length=0 %~1 > nul && root %~d1 > nul ! cat --length=0 %~pnx1 > nul && echo -n ! find --set-root cat --length=0 %~pnx1 > nul || exit
 FAT del (rd)/BOOTMGR > nul || echo -n
 FAT copy /o %@root%%%~pnx1 (rd)/BOOTMGR > nul || echo -n
 root %TMP_ROOT% > nul
 set TMP_ROOT=
 exit
 
 :NT6_BOOT
 ::附加参数
 if /i "%~2"=="NODETECTHAL" && cat --locate=26000010 (rd)/BOOT/BCD | call :NT6_NO_CONFIG= && shift 2 && goto :NT6_BOOT
 if /i "%~2"=="BOOTMGR" && call :BOOTMGR %~f3 && shift 2 && shift 2 && goto :NT6_BOOT
 ::shift 2
 ::if not "%~2"=="" goto :PE1.OPTIONS
 ::获取当前磁盘号
 set /a cur_drv=*0x82A0&0x7F
 set /a cur_pri=*0x829C>>16&0xFFFF
 clear
 echo
 echo -e $[0105]  Will Boot NT6.X From $[0102](hd%cur_drv%,%cur_pri%)$[0106]%tmp%
 echo
 echo -e $[0101]  Press $[1103]Esc$[0101] to quit!
 checkrange 0x11b pause --wait=3 --test-key && goto :exit
 if exist boot_cfg && call %boot_cfg%
 
 ::获取MBR签名
 dd if=(hd%cur_drv%)+1 of=(md) bs=1 count=4 skip=0x1b8 seek=0x60000
 ::获取当前分区偏移
 cat --length=0 ()-1
 dd if=(md) of=(md) bs=1 count=8 skip=0x8290 seek=0x60004
 ::修改MBR签名
 cat --locate=\x53\xB7\x53\xB7 --replace=*0x60000 --hex=4 (rd)/BOOT/BCD
 cat --locate=\0\x7E\0\0 --replace=*0x60004 --hex=8 (rd)/BOOT/BCD
 if /i not "%WinDir%"=="windows" && call :CHG_NT6_WINDIR
 if /i "%DEBUG%"=="on" && call :NT6_DEBUG
 if exist BOOT && %BOOT%
 map --mem (rd) (fd0)
 ::map --unmap=11
 map --rehook
 if exist ()/boot/slic.bin || find --set-root /boot/slic.bin || echo -n
 if exist ()/boot/slic.bin && SLIC ()/boot/slic.bin
 root (0)
 chainloader (fd0)/BOOTMGR
 boot
 exit
 
 :NT6_DEBUG
 find --set-root --devices=h /ntboot_bcd || call :error DEBUG: Missing file /ntboot_bcd.
 dd if=(rd)/BOOT/BCD of=()/ntboot_bcd
 exit
 
 :CHG_NT6_WINDIR
 ::以下都是测试,替换BCD里面WINDOWS目录,我自己也没有用过不知能否正常使用。
 WENV get WinDir=0x60000
 WENV call write --offset=0x3F76 (rd)/BOOT/BCD *0x60000$
 set tmp=%WinDir%\system32\winload.exe
 WENV get tmp=0x60000
 WENV call write --offset=0x39A6 (rd)/BOOT/BCD *0x60000$
 exit
 
 :error
 pause Error: %*
 :exit
 root %NTBOOT%
 root ()
 exit 1
 
 :FIRADISK.Addons
 :WINVBLK.Addons
 :VBOOT.Addons
 :Addons
 setlocal
 set addons=%*
 call Fn.11 "(/" "%addons:~0,1%" || set addons=%NTBOOT%.MOD/%addons%
 %addons% || echo -n
 endlocal
 exit
 
 :NTBOOT_HELP
 echo
 echo Usage:
 echo $[0102]        NTBOOT $[0107]NT5$[0105]|$[0107]NT6$[0105][=$[0107]root$[0105]|$[0107]file$[0105]]
 echo
 echo $[0102]        NTBOOT $[0105]PE1=file [PDIR=pdir] [OPTIONS=options] [ADDONS=cmd]
 echo
 echo $[0102]        NTBOOT $[0105]VBOOT=file [options...]
 echo
 echo $[0102]        NTBOOT $[0105]E820=N [options...]
 echo
 echo $[0102]        NTBOOT $[0107]ISO_INST$[0105]|$[0107]ISO_INST64$[0105]=[$[0107]firadisk$[0105]|$[0107]vboot$[0105]|$[0107]winvblk$[0105]] $[0106][options...]
 echo $[0106]        options: [[@]CDROM=iso_file] [FLOPPY=srs_img] [[@]HARDDISK=hdd_img]
 echo $[0106]                        [BOOT=cdrom|floppy|harddisk] [ADDONS=cmd] [...]
 echo $[0106]                 "@" will map image to RAM(used for firadisk/winvblk only).
 echo $[0106]                 "#" will map image to top of RAM(firadisk/winvblk only).
 echo
 pause > nul
 exit 2
 | 
 |