无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 6574|回复: 8
打印 上一主题 下一主题

在win7pe等环境下建立原生和VBOOT驱动的VHD的子VHD的批处理

[复制链接]
跳转到指定楼层
1#
发表于 2012-1-23 14:38:06 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
@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


:end
color 0f
cls

评分

参与人数 1无忧币 +20 收起 理由
wan06 + 20 原创内容

查看全部评分

9#
发表于 2015-2-12 19:56:25 来自手机 | 只看该作者
vboot不开发?
回复

使用道具 举报

8#
发表于 2015-2-9 21:36:22 | 只看该作者
学习了,vboot不开发,可惜了
回复

使用道具 举报

7#
发表于 2015-2-9 12:09:18 | 只看该作者
非常好,谢谢
回复

使用道具 举报

6#
发表于 2012-5-6 21:18:34 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

5#
发表于 2012-4-11 17:09:50 | 只看该作者
非常好,谢谢。
图形化工具外,命令式的操作,有时候是必须的。
回复

使用道具 举报

4#
 楼主| 发表于 2012-1-30 11:26:53 | 只看该作者

回复 #3 95453818 的帖子

vhd的名字(包括所在目录),都要根据自己的情况,对该批处理进行更改。若不更改,当然找不到VHD了。
回复

使用道具 举报

3#
发表于 2012-1-30 11:09:17 | 只看该作者

回复 #1 qj_tzy 的帖子

bat处理有点问题哦! 怎么一直找不到vhd

if %drv%==# goto nomainvhd

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:

获取不到盘符怎么回事!
vhd的名字到底是什么哦!用win7.vhd 或 my_win7.vhd都不对哦!
一直跳转 到nomainvhd

[ 本帖最后由 95453818 于 2012-1-30 11:12 编辑 ]
回复

使用道具 举报

2#
发表于 2012-1-25 20:56:07 | 只看该作者
试验了 很不错 谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 15:49

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表