无忧启动论坛

标题: 请教如何编辑NTBOOT将set sys=win7 写入autoexec.bat批处里? [打印本页]

作者: icons    时间: 2013-7-8 20:40
标题: 请教如何编辑NTBOOT将set sys=win7 写入autoexec.bat批处里?
请教如何编辑NTBOOT将set sys=win7 写入autoexec.bat批处里?

====NTBOOT============
!BAT
debug off
checkrange 20111212:-1 read 0x8278 || call :error Not supported grub4dos version!
set NTBOOT=%~f0
setlocal
:recovery
map --mem %NTBOOT%.BMP/W7REVHD.IMG (fd0)
map --hook
::查找VHD镜像所在分区,获取分区号
find --set-root --ignore-floppies --ignore-cd /vhdos/win7/win7_child.vhd (fd0)/diskid
cat --skip=0x4ff00 (md)+0x300 | set vhdp=
::准备 omnfis 标准盘符
echo %vhdp% > (md)0x200+1
cat --locate=\: --replace=\. (md)0x200+1
cat (md)0x200+1 | set vhdp=
:: 盘符写入指定位置
write --offset=52 (fd0)/autoexec.bat %vhdp%\r\n
chainloader (fd0)/io.sys
boot
exit
=====autoexec.bat==============================
@echo off
cls
tway /np >nul
:sys_set
set v_part=::::::::::
set sys=WIN7
cls
echo.
wbat text 3,6 (+green on black)"正删除%SYS%_child.vhd并从%SYS%_bak.vhd恢复,稍后启动......!!!"
echo.
omnifs delete %v_part%:\vhdos\%SYS%\%SYS%_child.vhd >nul
omnifs copy %v_part%:\vhdos\%SYS%\%SYS%_bak.vhd   %v_part%:\vhdos\%SYS%\%SYS%_child.vhd
goto end
:end
quit.com r
============================================
作者: zhaohj    时间: 2013-7-9 08:29
象下面的就是:
write --offset=52 (fd0)/autoexec.bat %vhdp%\r\n
-----------------
write --offset=xx (fd0)/autoexec.bat set sys=win7 \r\n
条件:autoexec.bat文件足够大
作者: icons    时间: 2013-7-9 09:28
zhaohj 发表于 2013-7-9 08:29
象下面的就是:
write --offset=52 (fd0)/autoexec.bat %vhdp%\r\n
-----------------

请问write --offset=xx中的XX数值应该怎样设置?
作者: zhaohj    时间: 2013-7-9 10:11
你自己数一下也能计算,回车换行占两个字节;
用winhex查看也行

Snap3.jpg (95.4 KB, 下载次数: 89)

Snap3.jpg

作者: icons    时间: 2013-7-9 10:34
zhaohj 发表于 2013-7-9 10:11
你自己数一下也能计算,回车换行占两个字节;
用winhex查看也行

明白了谢谢!
作者: 527104427    时间: 2013-7-9 11:19
icons 发表于 2013-7-9 10:34
明白了谢谢!

用下面的比较灵活,不用去数位置,寻找特征字符替换就行了。
注意autoexec.bat中,set sys=后面要有足够的空格。

====NTBOOT============
!BAT
debug off
checkrange 20111212:-1 read 0x8278 || call :error Not supported grub4dos version!
set NTBOOT=%~f0
setlocal
:recovery
map --mem %NTBOOT%.BMP/W7REVHD.IMG (fd0)
map --hook
::查找VHD镜像所在分区,获取分区号
find --set-root --ignore-floppies --ignore-cd /vhdos/win7/win7_child.vhd (fd0)/diskid
cat --skip=0x4ff00 (md)+0x300 | set vhdp=
::准备 omnfis 标准盘符
echo %vhdp% > (md)0x200+1
cat --locate=\: --replace=\. (md)0x200+1
cat (md)0x200+1 | set vhdp=
:: 盘符写入指定位置
write --offset=52 (fd0)/autoexec.bat %vhdp%\r\n
cat --locatei="set sys=" --replace="set sys=WIN7" --number=1 (fd0)/autoexec.bat
chainloader (fd0)/io.sys
boot
exit
=====autoexec.bat==============================
@echo off
cls
tway /np >nul
:sys_set
set v_part=::::::::::
set sys=                                                                                                                                                         
cls
echo.
wbat text 3,6 (+green on black)"正删除%SYS%_child.vhd并从%SYS%_bak.vhd恢复,稍后启动......!!!"
echo.
omnifs delete %v_part%:\vhdos\%SYS%\%SYS%_child.vhd >nul
omnifs copy %v_part%:\vhdos\%SYS%\%SYS%_bak.vhd   %v_part%:\vhdos\%SYS%\%SYS%_child.vhd
goto end
:end
quit.com r
============================================
作者: icons    时间: 2013-7-9 14:25
527104427 发表于 2013-7-9 11:19
用下面的比较灵活,不用去数位置,寻找特征字符替换就行了。
注意autoexec.bat中,set sys=后面要有足够 ...

用你推荐的方法试验,win7恢复成功了,但xp失败了:

捕获2.JPG (20.41 KB, 下载次数: 70)

捕获2.JPG

作者: 527104427    时间: 2013-7-9 15:02
icons 发表于 2013-7-9 14:25
用你推荐的方法试验,win7恢复成功了,但xp失败了:

看你的截图,与我提供的命令无关。

我只是提供思路,你可以自行变通。




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3