zoukankan      html  css  js  c++  java
  • 快速挂载和分离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 HKUS-1-5-20>nul 2>nul||echo 需要管理员权限运行!&&pause>Nul&&exit
    rem 全自动挂载与卸载指定虚拟磁盘文件
    rem 打开后自动检测并执行,若已挂载,则卸载,若已经卸载,则挂载。
    rem 请将虚拟磁盘文件的完整路径写在”filepath=“后面,支持带空格路径。
    rem “autoopen=ON” 可在挂载后自动打开虚拟磁盘上的所有分区,“ON”改成其它值则不打开。


    rem 设置
    set filepath=C:UsersABCVirtualBox VMs7asdfa.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

  • 相关阅读:
    哈希表
    矩阵加速(数列)
    线段树
    python
    vue 中防抖
    Windows版本与Internet Explorer版本对照
    一个怂女婿的成长笔记【二十三】
    一个怂女婿的成长笔记【二十一】
    vue xml数据格式化展示,展示在textarea里可编辑,和高亮处理方法
    substring 截取 第三个字符(/)后的字符串
  • 原文地址:https://www.cnblogs.com/mahocon/p/5995244.html
Copyright © 2011-2022 走看看