如果想把所有资料全部放在一个动态的VHD中,在Windows 7系统下需要使用时将其附加,在VPC中需要时再将VHD从Windows 7系统中分离,再挂到VPC上,这样,两边任何操作都会直接影响到VHD,不必进行多余的复制等操作,十分方便。
使用了一段时间之后,便发现附加VHD虽然好用但是操作实在麻烦,每次重启之后都要重新附加,挂到VPC之前还要先在系统中分离,每天往复操作N次,实在有些忍受不了,晚上闲来无事,写了两个小脚本,用来实现快速挂载(附加)和分离VHD文件:
在Win7下如何自动加载虚拟磁盘VHD文件
1) 编写一个自动脚本,假设命名为loadVHD.cmd,内容如下
@echo off
echo select vdisk file="D:\Alfresco.vhd" >vhdsel
echo attach vdisk >>vhdsel
echo list disk >>vhdsel
diskpart /s vhdsel
del /f /q vhdsel
exit
分离VHD的脚本,只需要将上述代码中 attach vdisk 命令改写为 detach vdisk 即可。
2) 打开组策略控制台gpedit.msc,从计算机配置->Windows设置->脚本->启动,添加上面的脚本文件
win7批处理:双击挂载 VHD 文件
@echo off
::批处理将在 C:\Windows 下生成三个脚本,分别用于挂载及卸载VHD。
::双击 VHD 虚拟盘文件即可挂载。
::右击盘符 -- 菜单选择“卸载 VHD 盘” 可卸载所有VHD盘。
::脚本内容:
::生成 “挂载VHD.cmd”
(echo ^(echo select vdisk file=%%1
echo echo attach vdisk
echo echo list partition^) ^| diskpart ^> %windir%\DiskPart.ini
echo for /f "skip=16 tokens=2" %%%%a in ^(%windir%\DiskPart.ini^) do ^(echo select vdisk file=%%1
echo echo sel part %%%%a
echo echo assign ^) ^| diskpart ) > %windir%\挂载VHD.cmd
:: 生成 “挂载VHD.vbs”
( echo cmdl = Wscript.Arguments^(0^) ^& " """ ^& Wscript.Arguments^(1^) ^& """"
echo createObject^("wscript.shell"^).run cmdl,0 ,True
echo createObject^("wscript.shell"^).run "Explorer /e," )> %windir%\挂载VHD.vbs
:: 生成 “卸载VHD.vbs”
( echo cmdl = "cmd.exe /c For /f ""skip=8 tokens=6*"" %%a in ('echo list vdisk ^| diskpart') do (echo select vdisk file=""%%b"" & echo detach vdisk ) ^| diskpart"
echo createObject^("wscript.shell"^).run cmdl,0
) > %windir%\卸载VHD.vbs
:: 注册 VHD 文件
assoc .vhd=VHDfile
ftype VHDfile=Wscript //E:vbscript %windir%\挂载VHD.vbs "%windir%\挂载VHD.cmd" "%%1"
:: 盘符右键菜单添加 "卸载 VHD 盘" 项
Reg add "HKEY_CLASSES_ROOT\Drive\shell\卸载 VHD 盘\command" /ve /d "Wscript //E:vbscript %windir%\卸载VHD.vbs" /f
pause