如果想把所有资料全部放在一个动态的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文件_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