快速挂载和分离VHD文件的小脚本

 

  =======代码开始========

  echo select vdisk file= %VHD文件路径%

  echo attach vdisk

  exit

  分离VHD的脚本,只需要将上述代码中 attach vdisk 命令改写为 detach vdisk 即可。

 

举个栗子:

@echo off
title 装载卸载VHD
color 2f
mode con cols=60 lines=40

:menu1
echo ==========================
echo 选择要进行的操作,按回车
echo ==========================
echo.
echo 1:装载VHD
echo.
echo 2:卸载VHD
echo.

:choice
set choice=
set /p choice= 请选择:
if not "%choice%"=="" SET Choice=%Choice:~0,1%
if %choice%==1 goto VHDon
if %choice%==2 goto VHDoff

echo 选择无效,重新输入!
echo.
goto choice

:VHDon
  echo select vdisk file= "E:\filevhd.vhd" >vhdsel(注意:路径也可以用"%~dp0filevhd.vhd",这样就要求BAT文件和VHD文件放在一起)
  echo attach vdisk>>vhdsel
  echo list disk>>vhdsel
  diskpart /s vhdsel
  del /f /q vhdsel
  exit

:VHDoff
  echo select vdisk file= "E:\filevhd.vhd" >vhdsel
  echo detach vdisk>>vhdsel
  echo list disk>>vhdsel
  diskpart /s vhdsel
  del /f /q vhdsel
  exit

 

======更方便的代码==================

 

@echo off
color 3f
title 虚拟磁盘自动挂载与卸载
reg query HKU\S-1-5-20>nul 2>nul||echo 需要管理员权限运行!&&pause>Nul&&exit
rem 全自动挂载与卸载指定虚拟磁盘文件
rem 打开后自动检测并执行,若已挂载,则卸载,若已经卸载,则挂载。
rem 请将虚拟磁盘文件的完整路径写在”filepath=“后面,支持带空格路径。
rem “autoopen=ON” 可在挂载后自动打开虚拟磁盘上的所有分区,“ON”改成其它值则不打开。


rem 设置
set filepath=C:\Users\ABC\VirtualBox VMs\7\asdfa.vhd
set autoopen=ON


if not exist "E:\filevhd.vhd" echo filepath设置错误,请检查并重试!&&pause>nul&&exit
pushd %~dp0\

rem 检测
echo select vdisk file="E:\filevhd.vhd">vdisktemp.txt
echo detail vdisk>>vdisktemp.txt
diskpart /s vdisktemp.txt|(findstr 找不到关联的磁盘号 >nul 2>nul)&&goto :挂载||goto :卸载


:挂载
echo select vdisk file="E:\filevhd.vhd">vdisk-attach.txt
echo attach vdisk>>vdisk-attach.txt
echo detail disk>>vdisk-attach.txt
diskpart /s vdisk-attach.txt>vdisklog.txt
for /f "tokens=3" %%a in ('findstr 磁盘分区 vdisklog.txt') do (if /i "%autoopen%"=="ON" start %%a:)
goto :清理临时文件

:卸载
echo select vdisk file="E:\filevhd.vhd">vdisk-detach.txt
echo detach vdisk>>vdisk-detach.txt
diskpart /s vdisk-detach.txt
goto :清理临时文件

:清理临时文件
del vdisk-attach.txt /f /q>nul 2>nul
del vdisk-detach.txt /f /q>nul 2>nul
del vdisktemp.txt /f /q>nul 2>nul
del vdisklog.txt /f /q>nul 2>nul
exit

 +++++++++++++++++++++++++++++++++++++++++自用+++++++++++++++++++++++++++++++++

使用BAT脚本挂载、卸载VHD文件

 

想开机自动挂载vhd文件,因为diskpart是一个单独的程序,需要在它下面执行命令,所以直接通过bat或cmd是无法实现的,后来仔细看了diskpart的帮助

————————————————————————

Microsoft DiskPart 语法:

diskpart [/s <script>] [/?] ←这里

/s <script> - 使用一个 DiskPart 脚本。

/? - 显示这个帮助屏幕。

————————————————————————

 

看到了吧,通过diskpart [/s <script>]这个命令可以执行基于diskpart的脚本文件,这样我们的cmd文件就可以这样写:

diskpart /s c:\vhd.vbs

然后呢vhd.vbs中写需要在diskpart下面执行的命令,内容为:

select vdisk file=c:\vhd.vhd

attach vdisk

最后呢,还要实现隐藏,这个还是需要用vbs脚本来实现,内容为:

Set ws = CreateObject("Wscript.Shell") 

ws.run "cmd /c c:\vhd.cmd",vbhide

 

具体代码如下:

@echo off

  echo select vdisk file= %VHD文件路径% >vhdsel

  echo attach vdisk>>vhdsel

  echo list disk>>vhdsel

  diskpart /s vhdsel

  del /f /q vhdsel

  exit

  分离VHD的脚本,只需要将上述代码中 attach vdisk 命令改写为 detach vdisk 即可。

 

或者更详细一点:

 

@echo off

title 挂载卸载VHD

:start

cls

color 0a

MODE con: COLS=60 LINES=40

echo.

echo   ===============================

echo    请选择要进行的操作,然后按回车

echo   ===============================

echo.

echo   0.挂载VHD

echo.

echo   1.卸载VHD

echo.

echo==================================

 

:choice

set choice=

set /p choice=     请选择对应项目:

IF NOT "%Choice%"=="" SET Choice=%Choice:~0,1%

if /i "%choice%"=="0" goto loadVHD

if /i "%choice%"=="1" goto unloadVHD

 

:loadVHD

@echo off 

echo select vdisk file="E:\本机驱动\360file.vhd" >vhdsel 

echo attach vdisk>>vhdsel 

echo list disk>>vhdsel 

diskpart /s vhdsel 

del /f /q vhdsel 

exit

 

 

:unloadVHD

@echo off 

echo select vdisk file="E:\本机驱动\360file.vhd" >vhdsel 

echo detach vdisk>>vhdsel 

echo list disk>>vhdsel 

diskpart /s vhdsel 

del /f /q vhdsel 

exit

转载于:https://www.cnblogs.com/mahocon/p/5995244.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值