标题: 在win7pe等环境下建立原生和VBOOT驱动的VHD的子VHD的批处理 [打印本页] 作者: qj_tzy 时间: 2012-1-23 14:38 标题: 在win7pe等环境下建立原生和VBOOT驱动的VHD的子VHD的批处理 @ECHO OFF
rem 在win7pe等环境下建立原生和VBOOT驱动的VHD的子VHD的批处理
color 1f
cls
echo 此脚本(批处理)功能:创建win2008r2/win7/2008/vista/2003/xp.vhd的子VHD。
echo 若VHD所在分区是隐藏的,运行前须用bootice等工具将分区改为非隐藏,完成后再隐藏。
echo 创建win2008r2/win7.vhd等原生VHD的子VHD时,须使用diskpart命令,该命令须运行在:
echo winxp/2003/vista/2008/win7/2008r2/win7pe中,不能运行在DOS/xpe/2003pe环境中。
echo 创建win2008/vista/2003/winxp.vhd等vboot驱动的VHD的子VHD时,
echo 可运行在DOS/xpe/2003pe/win7pe、winxp及以上实体系统等以上任一环境中。
echo 但须在VHD所在分区根目录下拷入vboot目录(须使用vboot目录下的命令)。
echo 以上准备就绪后,推荐在win7pe环境中进行。
echo.
echo 按^C中止本脚本运行,否则继续运行本脚本。
pause
echo.
echo 选择要创建子VHD的系统:
echo 1-win8 (原生VHD)
echo 2-win2008r2(原生VHD)
echo 3-win7 (原生VHD)
echo 4-win2008 (vboot驱动VHD)
echo 5-winvista (vboot驱动VHD)
echo 6-win2003 (vboot驱动VHD)
echo 7-winxp (vboot驱动VHD)
echo.
set /P sysno=请选择1-7(其他任意键退出):
if "%sysno%"=="1" goto win8
if "%sysno%"=="2" goto win2008r2
if "%sysno%"=="3" goto win7
if "%sysno%"=="4" goto win2008
if "%sysno%"=="5" goto winvista
if "%sysno%"=="6" goto win2003
if "%sysno%"=="7" goto winxp
goto end
:win8
set sysname=win8
set vhddir=\vhd_sys
set mainvhd=win8.vhd
set subvhd=win8_CHILD.vhd
set subvhdbak=win8_CHILD_BAK.vhd
goto notvboot
:win2008r2
set sysname=win2008r2
set vhddir=\vhd_sys
set mainvhd=my_win2008r2.vhd
set subvhd=my_win2008r2_CHILD.vhd
set subvhdbak=my_win2008r2_CHILD_BAK.vhd
goto notvboot
:win7
set sysname=win7
set vhddir=\vhd_sys
set mainvhd=my_win7.vhd
set subvhd=my_win7_CHILD.vhd
set subvhdbak=my_win7_CHILD_BAK.vhd
goto notvboot
:win2008
set sysname=win2008
set vhddir=\vboot_vhd
set mainvhd=win2008.vhd
set subvhd=win2008_child.vhd
set subvhdbak=win2008_child_bak.vhd
goto vboot
:winvista
set sysname=winvista
set vhddir=\vboot_vhd
set mainvhd=winvista.vhd
set subvhd=winvista_child.vhd
set subvhdbak=winvista_child_bak.vhd
goto vboot
:win2003
set sysname=win2003
set vhddir=\vboot_vhd
set mainvhd=win2003.VHD
set subvhd=win2003_child.vhd
set subvhdbak=win2003_child_bak.vhd
goto vboot
:winxp
set sysname=winxp
set vhddir=\vboot_vhd
set mainvhd=winxp.vhd
set subvhd=winxp_child.vhd
set subvhdbak=winxp_child_bak.vhd
goto vboot
:notvboot
set drv=#
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:%vhddir%\%mainvhd% set drv=%%b:
if %drv%==# goto nomainvhd
if exist %drv%%vhddir%\%subvhd% del %drv%%vhddir%\%subvhd%
if exist %drv%%vhddir%\%subvhdbak% del %drv%%vhddir%\%subvhdbak%
echo create vdisk file="%drv%%vhddir%\%subvhd%" parent="%drv%%vhddir%\%mainvhd%" > "%drv%%vhddir%\createmp.txt"
diskpart /s "%drv%%vhddir%\createmp.txt"
del %drv%%vhddir%\createmp.txt
copy %drv%%vhddir%\%subvhd% %drv%%vhddir%\%subvhdbak%
echo.
echo 已成功创建%sysname%系统原生VHD的子VHD!
echo.
pause
goto end
:vboot
set drv=#
for %%b in (c d e f g h i j k l m n o p q r s t u v w x y z) do if exist %%b:%vhddir%\%mainvhd% set drv=%%b:
if %drv%==# goto nomainvhd
if exist %drv%%vhddir%\%subvhd% del %drv%%vhddir%\%subvhd%
if exist %drv%%vhddir%\%subvhdbak% del %drv%%vhddir%\%subvhdbak%
%drv%\vboot\tools\x86\vbootctl creatediff %drv%%vhddir%\%subvhd% %drv%%vhddir%\%mainvhd%
copy %drv%%vhddir%\%subvhd% %drv%%vhddir%\%subvhdbak%
echo.
echo 已成功创建%sysname%系统vboot驱动的VHD的子VHD!
echo.
pause
goto end
:nomainvhd
echo.
echo.未找到主VHD文件,按任一键退出......
echo.
pause
goto end